| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef ASH_API_TASKS_TASKS_DELEGATE_H_ |
| #define ASH_API_TASKS_TASKS_DELEGATE_H_ |
| |
| #include "ash/api/tasks/tasks_client.h" |
| #include "ash/ash_export.h" |
| |
| class AccountId; |
| |
| namespace ash::api { |
| |
| // Interface for communicating with the Google Tasks API. |
| class ASH_EXPORT TasksDelegate { |
| public: |
| virtual ~TasksDelegate() = default; |
| |
| // Notifies the delegate that a different profile is being used. |
| virtual void UpdateClientForProfileSwitch(const AccountId& account_id) = 0; |
| |
| // Retrieves all task lists to be used in the provided `callback`. If |
| // `force_fetch` is true, new data will be fetched from the Google Tasks API. |
| virtual void GetTaskLists(bool force_fetch, |
| TasksClient::GetTaskListsCallback callback) = 0; |
| |
| // Retrieves the tasks in the list with the provided `task_list_id` to be used |
| // in the provided `callback`. If `force_fetch` is true, new data will be |
| // fetched from the Google Tasks API. |
| virtual void GetTasks(const std::string& task_list_id, |
| bool force_fetch, |
| TasksClient::GetTasksCallback callback) = 0; |
| |
| // Adds a task with the given `title` to the task list with id `task_list_id`. |
| // `callback` provides a pointer to the saved Task if the operation was |
| // successful, or a nullptr if not. |
| virtual void AddTask(const std::string& task_list_id, |
| const std::string& title, |
| TasksClient::OnTaskSavedCallback callback) = 0; |
| |
| // Updates the task in the task list with id `task_list_id` and with id |
| // `task_id`. `callback` provides a pointer to the saved Task if the operation |
| // was successful, or a nullptr if not. |
| virtual void UpdateTask(const std::string& task_list_id, |
| const std::string& task_id, |
| const std::string& title, |
| bool completed, |
| TasksClient::OnTaskSavedCallback callback) = 0; |
| }; |
| |
| } // namespace ash::api |
| |
| #endif // ASH_API_TASKS_TASKS_DELEGATE_H_ |