public async Task RequestFileDelete(LockerObject fileInfo) { var msg = new FileDeleteRequestMessage { filename = fileInfo.name }; await SendMessage(msg); }
private async Task HandleFileDeleteRequest(FileDeleteRequest msg) { var fileInfo = new LockerObject { name = msg.filename }; Database.Instance.DeleteFile(_user, fileInfo); IOController.Instance.Delete($"{UserPath}/{msg.filename}"); _user = Database.Instance.GetUser(_user._id); await SendFileCatalogUpdate(_user.locker); }
private async Task HandleFileCreateRequest(FileCreateRequestMessage msg) { var file = new LockerObject { name = msg.name, encrypted = msg.encrypted }; Database.Instance.AddFile(_user, file); await IOController.Instance.Write($"{UserPath}/{msg.name}", msg.data); _user = Database.Instance.GetUser(_user._id); await SendFileCatalogUpdate(_user.locker); }
public FileItemViewModel(LockerObject fileInfo) { _fileInfo = fileInfo; SelectCommand = new RelayCommand(p => { IsSelected = !IsSelected; OnSelect?.Invoke(this, null); }); DownloadCommand = new RelayCommand(p => { DownloadFile(); }); }
public void AddFile(User user, LockerObject file) { try { var collection = _database.GetCollection <User>("users"); var filter = Builders <User> .Filter.Eq("_id", user._id); var update = Builders <User> .Update.AddToSet("locker.content", file); collection.UpdateOne(filter, update); } catch (Exception ex) { Console.WriteLine($"addfile: {ex.ToString()}"); } }
public ExplorerViewModel() { BackCommand = new RelayCommand(p => { NavigationController.Instance.DropViews(); NavigationController.Instance.ShowView <LoginViewModel>("start"); BackendConnector.Instance.Init(); }); CreateFileCommand = new RelayCommand(p => { var dialog = NavigationController.Instance.ShowView <CreateFileViewModel>("create-file"); dialog.CompleteAction = async(r, f, pw) => { if (r != null) { var error = await BackendConnector.Instance.RequestFileCreate(r, f, pw); if (error != null) { var msg = NavigationController.Instance.ShowView <MessageViewModel>("error-message"); msg.Message = error; msg.ButtonMessage = Resources.Ok; msg.MessageActionCommand = new RelayCommand(param => { NavigationController.Instance.ShowView <CreateFileViewModel>("create-file"); NavigationController.Instance.DeleteView <MessageViewModel>("error-message"); }); return; } } NavigationController.Instance.ShowView <ExplorerViewModel>("home"); NavigationController.Instance.DeleteView <CreateFileViewModel>("create-file"); }; }); DeleteFileCommand = new RelayCommand(p => { var fileInfo = new LockerObject() { name = _selectedFile.Name }; BackendConnector.Instance.RequestFileDelete(fileInfo); }, p => { return(Files?.Count(f => f.IsSelected) == 1); }); BackendConnector.Instance.OnFileCatalogUpdate += UpdateFileCatalog; BackendConnector.Instance.RequestFileCatalog(); }
public void DeleteFile(User user, LockerObject file) { try { var collection = _database.GetCollection <User>("users"); var filter = Builders <User> .Filter.Eq("_id", user._id); var update = Builders <User> .Update.PullFilter(u => u.locker.content, f => f.name == file.name); collection.UpdateOne(filter, update); } catch (Exception ex) { Console.WriteLine($"addfile: {ex.ToString()}"); } }
public async Task <IOFile> RequestFileDownload(LockerObject fileInfo, string password = "") { IOFile res = null; var msg = new FileDownloadRequestMessage { filename = fileInfo.name }; await SendMessage(msg); var resp = await WaitForRequestResponse <FileDownloadResponseMessage>(60000, MessageType.FileDownloadResponse); if (resp != null && resp.success) { var fileJson = fileInfo.encrypted? Encryption.Decrypt(resp.data, password): resp.data; res = JsonConvert.DeserializeObject <IOFile>(fileJson); } return(res); }
public CreateFileViewModel() { OkCommand = new RelayCommand(p => { var pw = ((PasswordBox)p).Password; var result = new LockerObject { name = Name, encrypted = Encrypt && !string.IsNullOrEmpty(pw) }; CompleteAction?.Invoke(result, _file, pw); _file = null; OpenFileText = Resources.OpenFile; }, DataValid); CancelCommand = new RelayCommand(p => { CompleteAction?.Invoke(null, null, null); }); OpenFileCommand = new RelayCommand(OpenFile); }
public async Task <string> RequestFileCreate(LockerObject fileInfo, IOFile file, string password = null) { try { var dataJson = JsonConvert.SerializeObject(file); var dataJsonEncrypted = fileInfo.encrypted ? Encryption.Encrypt(dataJson, password): dataJson; var msg = new FileCreateRequestMessage { name = fileInfo.name, data = dataJsonEncrypted, encrypted = fileInfo.encrypted }; await SendMessage(msg); return(null); } catch (Exception e) { Console.WriteLine(e); return(Resources.FileTooBigMessage); } }