Files: fix
This commit is contained in:
parent
2936cb4ca2
commit
44bd9f1d6d
@ -747,141 +747,6 @@ public class FileMarker
|
||||
return entryTags;
|
||||
}
|
||||
|
||||
public async IAsyncEnumerable<FileEntry> SetTagsNewAsyncEnumerable<T>(Folder<T> parent, IAsyncEnumerable<FileEntry> entries)
|
||||
{
|
||||
var tagDao = _daoFactory.GetTagDao<T>();
|
||||
var folderDao = _daoFactory.GetFolderDao<T>();
|
||||
var totalTags = await tagDao.GetNewTagsAsync(_authContext.CurrentAccount.ID, parent, false).ToListAsync();
|
||||
|
||||
if (totalTags.Count > 0)
|
||||
{
|
||||
var parentFolderTag = Equals(await _globalFolder.GetFolderShareAsync<T>(_daoFactory), parent.Id)
|
||||
? await tagDao.GetNewTagsAsync(_authContext.CurrentAccount.ID, await folderDao.GetFolderAsync(await _globalFolder.GetFolderShareAsync<T>(_daoFactory))).FirstOrDefaultAsync()
|
||||
: totalTags.FirstOrDefault(tag => tag.EntryType == FileEntryType.Folder && Equals(tag.EntryId, parent.Id));
|
||||
|
||||
totalTags = totalTags.Where(e => e != parentFolderTag).ToList();
|
||||
var countSubNew = 0;
|
||||
totalTags.ForEach(tag => countSubNew += tag.Count);
|
||||
|
||||
if (parentFolderTag == null)
|
||||
{
|
||||
parentFolderTag = Tag.New(_authContext.CurrentAccount.ID, parent, 0);
|
||||
parentFolderTag.Id = -1;
|
||||
}
|
||||
|
||||
if (parentFolderTag.Count != countSubNew)
|
||||
{
|
||||
if (countSubNew > 0)
|
||||
{
|
||||
var diff = parentFolderTag.Count - countSubNew;
|
||||
|
||||
parentFolderTag.Count -= diff;
|
||||
if (parentFolderTag.Id == -1)
|
||||
{
|
||||
tagDao.SaveTags(parentFolderTag);
|
||||
}
|
||||
else
|
||||
{
|
||||
tagDao.UpdateNewTags(parentFolderTag);
|
||||
}
|
||||
|
||||
var cacheFolderId = parent.Id;
|
||||
var parentsList = await _daoFactory.GetFolderDao<T>().GetParentFoldersAsync(parent.Id).Reverse().ToListAsync();
|
||||
parentsList.Remove(parent);
|
||||
|
||||
if (parentsList.Count > 0)
|
||||
{
|
||||
var rootFolder = parentsList.Last();
|
||||
T rootFolderId = default;
|
||||
cacheFolderId = rootFolder.Id;
|
||||
if (rootFolder.RootFolderType == FolderType.BUNCH)
|
||||
{
|
||||
cacheFolderId = rootFolderId = await _globalFolder.GetFolderProjectsAsync<T>(_daoFactory);
|
||||
}
|
||||
else if (rootFolder.RootFolderType == FolderType.USER && !Equals(rootFolder.RootId, _globalFolder.GetFolderMy(this, _daoFactory)))
|
||||
{
|
||||
cacheFolderId = rootFolderId = await _globalFolder.GetFolderShareAsync<T>(_daoFactory);
|
||||
}
|
||||
|
||||
if (rootFolderId != null)
|
||||
{
|
||||
parentsList.Add(await _daoFactory.GetFolderDao<T>().GetFolderAsync(rootFolderId));
|
||||
}
|
||||
|
||||
foreach (var folderFromList in parentsList)
|
||||
{
|
||||
var parentTreeTag = await tagDao.GetNewTagsAsync(_authContext.CurrentAccount.ID, folderFromList).FirstOrDefaultAsync();
|
||||
|
||||
if (parentTreeTag == null)
|
||||
{
|
||||
if (await _fileSecurity.CanReadAsync(folderFromList))
|
||||
{
|
||||
tagDao.SaveTags(Tag.New(_authContext.CurrentAccount.ID, folderFromList, -diff));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
parentTreeTag.Count -= diff;
|
||||
tagDao.UpdateNewTags(parentTreeTag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cacheFolderId != null)
|
||||
{
|
||||
RemoveFromCahce(cacheFolderId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
await RemoveMarkAsNewAsync(parent);
|
||||
}
|
||||
}
|
||||
|
||||
await foreach (var e in entries)
|
||||
{
|
||||
if (e is FileEntry<int>)
|
||||
{
|
||||
var entry = (FileEntry<int>)e;
|
||||
var curTag = totalTags.FirstOrDefault(tag => tag.EntryType == entry.FileEntryType && tag.EntryId.Equals(entry.Id));
|
||||
|
||||
if (entry.FileEntryType == FileEntryType.Folder)
|
||||
{
|
||||
((IFolder)entry).NewForMe = curTag != null ? curTag.Count : 0;
|
||||
}
|
||||
else if (curTag != null)
|
||||
{
|
||||
entry.IsNew = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (e is FileEntry<string>)
|
||||
{
|
||||
var entry = (FileEntry<string>)e;
|
||||
var curTag = totalTags.FirstOrDefault(tag => tag.EntryType == entry.FileEntryType && tag.EntryId.Equals(entry.Id));
|
||||
|
||||
if (entry.FileEntryType == FileEntryType.Folder)
|
||||
{
|
||||
((IFolder)entry).NewForMe = curTag != null ? curTag.Count : 0;
|
||||
}
|
||||
else if (curTag != null)
|
||||
{
|
||||
entry.IsNew = true;
|
||||
}
|
||||
}
|
||||
|
||||
yield return e;
|
||||
}
|
||||
|
||||
yield break;
|
||||
}
|
||||
|
||||
await foreach (var e in entries)
|
||||
{
|
||||
yield return e;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task SetTagsNewAsync<T>(Folder<T> parent, IEnumerable<FileEntry> entries)
|
||||
{
|
||||
var tagDao = _daoFactory.GetTagDao<T>();
|
||||
|
Loading…
Reference in New Issue
Block a user