private void RegisterMessages() { _messenger.Register <TaskListItemViewModel>( this, $"{MessageType.NAVIGATIONVIEW_SELECTION_CHANGED}", (taskList) => { _currentTaskList = taskList; _messenger.Send(false, $"{MessageType.OPEN_PANE}"); }); _messenger.Register <TaskItemViewModel>( this, $"{MessageType.NEW_TASK}", async(task) => { await GetAllTaskListAsync(); await InitView(task.TaskID); CurrentTask.Validator = i => { var u = i as TaskItemViewModel; if (string.IsNullOrEmpty(u.Title) || u.Title.Length < 2) { u.Properties[nameof(u.Title)].Errors.Add("Title is required"); } if (string.IsNullOrEmpty(u.Notes) || u.Notes.Length < 2) { u.Properties[nameof(u.Notes)].Errors.Add("Notes are required"); } }; UpdateTaskOperationTitle(CurrentTask.IsNew, CurrentTask.HasParentTask); //IsCurrentTaskTitleFocused = true; CurrentTask.Validate(); }); _messenger.Register <string>( this, $"{MessageType.TASK_DELETED_FROM_CONTENT_FRAME}", OnTaskRemoved); _messenger.Register <bool>( this, $"{MessageType.SHOW_PANE_FRAME_PROGRESS_RING}", (show) => ShowTaskProgressRing = show); _messenger.Register <Tuple <TaskItemViewModel, bool> >( this, $"{MessageType.TASK_STATUS_CHANGED_FROM_CONTENT_FRAME}", (tuple) => OnTaskStatusChanged(tuple.Item1, tuple.Item2)); }
public async Task UpdateTaskListAsync(TaskListItemViewModel taskList) { int index = TaskLists.IndexOf(taskList); string newTitle = await _dialogService.ShowInputStringDialogAsync( "Type the new task list name", taskList.Title, "Update", "Cancel"); if (string.IsNullOrEmpty(newTitle)) { return; } _messenger.Send(true, $"{MessageType.SHOW_CONTENT_FRAME_PROGRESS_RING}"); var dbResponse = await _dataService .TaskListService .FirstOrDefaultAsNoTrackingAsync(t => t.GoogleTaskListID == taskList.TaskListID); if (!dbResponse.Succeed) { await _dialogService.ShowMessageDialogAsync( "Error", $"An unknown error occurred while trying to retrieve the task list from db. Error = {dbResponse.Message}"); return; } dbResponse.Result.Title = newTitle; dbResponse.Result.UpdatedAt = DateTimeOffset.UtcNow; dbResponse.Result.ToBeSynced = true; if (dbResponse.Result.LocalStatus != LocalStatus.CREATED) { dbResponse.Result.LocalStatus = LocalStatus.UPDATED; } var response = await _dataService .TaskListService .UpdateAsync(dbResponse.Result); if (!response.Succeed) { _messenger.Send(false, $"{MessageType.SHOW_CONTENT_FRAME_PROGRESS_RING}"); await _dialogService.ShowMessageDialogAsync( "Error", $"Coudln't update the task list {taskList.Title}. Error = {response.Message}"); return; } TaskLists[index] = _mapper.Map <TaskListItemViewModel>(dbResponse.Result); _messenger.Send(false, $"{MessageType.SHOW_CONTENT_FRAME_PROGRESS_RING}"); //If the updated task is the same as the selected one //we update SelectedItem if (SelectedItem == taskList) { SelectedItem = TaskLists[index]; } }
public async Task DeleteTaskList(TaskListItemViewModel taskList) { bool deleteCurrentTaskList = await _dialogService.ShowConfirmationDialogAsync( "Confirmation", $"Are you sure you want to delete {taskList.Title}?", "Yes", "No"); if (!deleteCurrentTaskList) { return; } _messenger.Send(true, $"{MessageType.SHOW_CONTENT_FRAME_PROGRESS_RING}"); //If we are deleting the tasklist that is selected //lets close the panel to avoid creating new tasks //in the CurrentTaskList if (CurrentTaskList == taskList) { OpenPane(false); } var dbResponse = await _dataService .TaskListService .FirstOrDefaultAsNoTrackingAsync(tl => tl.GoogleTaskListID == taskList.TaskListID); if (!dbResponse.Succeed) { await _dialogService.ShowMessageDialogAsync( "Error", $"An unknown error occurred while trying to retrieve the task list from db. Error = {dbResponse.Message}"); return; } EmptyResponseDto response; //if the task is created but wasnt synced, we remove it from the db if (dbResponse.Result.LocalStatus == LocalStatus.CREATED) { response = await _dataService .TaskListService .RemoveAsync(dbResponse.Result); } else { dbResponse.Result.LocalStatus = LocalStatus.DELETED; dbResponse.Result.ToBeSynced = true; response = await _dataService .TaskListService .UpdateAsync(dbResponse.Result); } if (!response.Succeed) { _messenger.Send(false, $"{MessageType.SHOW_CONTENT_FRAME_PROGRESS_RING}"); await _dialogService.ShowMessageDialogAsync( "Error", $"Coudln't delete the task list {taskList.Title}. Error = {response.Message}"); return; } //Here we select the previoues task list only if the //selected item = the task list to be removed if (SelectedItem == taskList) { int removedIndex = TaskLists.IndexOf(taskList); if (removedIndex != -1 && removedIndex > 0) { var taskListToSelect = TaskLists[removedIndex - 1]; SelectedItem = taskListToSelect; _appSettings.SelectedDbTaskListId = taskListToSelect.Id; } else { OnNavigationViewSelectionChangeAsync(null); } } else if (TaskLists.Count == 1) { OnNavigationViewSelectionChangeAsync(null); } TaskLists.Remove(taskList); _messenger.Send(false, $"{MessageType.SHOW_CONTENT_FRAME_PROGRESS_RING}"); _messenger.Send( $"Sucessfully removed {taskList.Title} task list", $"{MessageType.SHOW_IN_APP_NOTIFICATION}"); }
public void OnTaskListAdded(TaskListItemViewModel taskList) { TaskLists.Add(taskList); SelectedItem = taskList; _appSettings.SelectedDbTaskListId = taskList.Id; }