private void CheckAndUpdateOffline(MNode megaNode) { var offlineNodePath = OfflineService.GetOfflineNodePath(megaNode); if ((megaNode.getType() == MNodeType.TYPE_FILE && FileService.FileExists(offlineNodePath)) || (megaNode.getType() == MNodeType.TYPE_FOLDER && FolderService.FolderExists(offlineNodePath)) || TransferService.ExistPendingNodeOfflineTransfer(this)) { if (SavedForOfflineDB.ExistsNodeByLocalPath(offlineNodePath)) { SavedForOfflineDB.UpdateNode(megaNode); } else { SavedForOfflineDB.InsertNode(megaNode); } this.IsSavedForOffline = true; return; } if (SavedForOfflineDB.ExistsNodeByLocalPath(offlineNodePath)) { SavedForOfflineDB.DeleteNodeByLocalPath(offlineNodePath); } this.IsSavedForOffline = false; }
/// <summary> /// Remove the node from the offline section. /// </summary> /// <returns>TRUE if the node was successfully removed or FALSE in other case.</returns> public bool RemoveFromOffline() { var nodePath = OfflineService.GetOfflineNodePath(this.OriginalMNode); var parentNodePath = OfflineService.GetOfflineParentNodePath(this.OriginalMNode); // Search if the file has a pending transfer for offline and cancel it on this case TransferService.CancelPendingNodeOfflineTransfers(this); bool result = true; if (this.IsFolder) { result &= OfflineService.RemoveFolderFromOfflineDB(nodePath); result &= FolderService.DeleteFolder(nodePath, true); } else { result &= SavedForOfflineDB.DeleteNodeByLocalPath(nodePath); result &= FileService.DeleteFile(nodePath); } result &= OfflineService.CleanOfflineFolderNodePath(parentNodePath); this.IsSavedForOffline = !result; return(result); }
/// <summary> /// Insert a node in the database. /// </summary> /// <param name="megaNode">Node to insert.</param> public static void InsertNode(MNode megaNode) { var offlineNodePath = OfflineService.GetOfflineNodePath(megaNode); var parentNode = SdkService.MegaSdk.getParentNode(megaNode); var sfoNode = new SavedForOfflineDB() { Fingerprint = SdkService.MegaSdk.getNodeFingerprint(megaNode), Base64Handle = megaNode.getBase64Handle(), LocalPath = offlineNodePath, ParentBase64Handle = parentNode != null? parentNode.getBase64Handle() : string.Empty }; InsertItem(sfoNode); }