Ver código fonte

[cli] Fix handling of delete file with stale colleciton entry (#1259)

## Description

## Tests
Tested locally
Neeraj Gupta 1 ano atrás
pai
commit
a51a965fc8
3 arquivos alterados com 8 adições e 4 exclusões
  1. 4 0
      cli/internal/api/file_type.go
  2. 1 1
      cli/pkg/mapper/photo.go
  3. 3 3
      cli/pkg/remote_sync.go

+ 4 - 0
cli/internal/api/file_type.go

@@ -18,6 +18,10 @@ type File struct {
 	Info               *FileInfo      `json:"info,omitempty"`
 }
 
+func (f File) IsRemovedFromAlbum() bool {
+	return f.IsDeleted || f.File.EncryptedData == "-"
+}
+
 // FileInfo has information about storage used by the file & it's metadata(future)
 type FileInfo struct {
 	FileSize      int64 `json:"fileSize,omitempty"`

+ 1 - 1
cli/pkg/mapper/photo.go

@@ -73,7 +73,7 @@ func MapCollectionToAlbum(ctx context.Context, collection api.Collection, holder
 }
 
 func MapApiFileToPhotoFile(ctx context.Context, album model.RemoteAlbum, file api.File, holder *secrets.KeyHolder) (*model.RemoteFile, error) {
-	if file.IsDeleted {
+	if file.IsRemovedFromAlbum() {
 		return nil, errors.New("file is deleted")
 	}
 	albumKey := album.AlbumKey.MustDecrypt(holder.DeviceKey)

+ 3 - 3
cli/pkg/remote_sync.go

@@ -87,16 +87,16 @@ func (c *ClICtrl) fetchRemoteFiles(ctx context.Context) error {
 				if file.UpdationTime > maxUpdated {
 					maxUpdated = file.UpdationTime
 				}
-				if isFirstSync && file.IsDeleted {
+				if isFirstSync && file.IsRemovedFromAlbum() {
 					// on first sync, no need to sync delete markers
 					continue
 				}
-				albumEntry := model.AlbumFileEntry{AlbumID: album.ID, FileID: file.ID, IsDeleted: file.IsDeleted, SyncedLocally: false}
+				albumEntry := model.AlbumFileEntry{AlbumID: album.ID, FileID: file.ID, IsDeleted: file.IsRemovedFromAlbum(), SyncedLocally: false}
 				putErr := c.UpsertAlbumEntry(ctx, &albumEntry)
 				if putErr != nil {
 					return putErr
 				}
-				if file.IsDeleted {
+				if file.IsRemovedFromAlbum() {
 					continue
 				}
 				photoFile, err := mapper.MapApiFileToPhotoFile(ctx, album, file, c.KeyHolder)