Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
        }