| // 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_GLANCEABLES_CLASSROOM_GLANCEABLES_CLASSROOM_CLIENT_H_ |
| #define ASH_GLANCEABLES_CLASSROOM_GLANCEABLES_CLASSROOM_CLIENT_H_ |
| |
| #include <memory> |
| #include <vector> |
| |
| #include "ash/ash_export.h" |
| #include "base/functional/callback_forward.h" |
| |
| namespace ash { |
| |
| struct GlanceablesClassroomAssignment; |
| |
| // Interface for the classroom browser client. |
| class ASH_EXPORT GlanceablesClassroomClient { |
| public: |
| using IsRoleEnabledCallback = base::OnceCallback<void(bool active)>; |
| // `success` indicates whether the requested assignment data was successfully |
| // refreshed. If `success` is false, `assignment` may be non-empty, but the |
| // assignment information may be obsolete, incomplete. |
| using GetAssignmentsCallback = base::OnceCallback<void( |
| bool success, |
| std::vector<std::unique_ptr<GlanceablesClassroomAssignment>> |
| assignments)>; |
| |
| virtual ~GlanceablesClassroomClient() = default; |
| |
| // Verifies if the Classroom integration is disabled by admin by checking: |
| // 1) if the integration is not listed in |
| // `prefs::kGoogleCalendarIntegrationName`, |
| // 2) if the Classroom app is disabled by policy, |
| // 3) if access to the Classroom web UI (URLs) is blocked by policy. |
| virtual bool IsDisabledByAdmin() const = 0; |
| |
| // Returns `true` if current user is enrolled in at least one classroom course |
| // as a student. |
| virtual void IsStudentRoleActive(IsRoleEnabledCallback callback) = 0; |
| |
| // Return student assignments based on different due date/time and submission |
| // state filters. |
| virtual void GetCompletedStudentAssignments( |
| GetAssignmentsCallback callback) = 0; |
| virtual void GetStudentAssignmentsWithApproachingDueDate( |
| GetAssignmentsCallback callback) = 0; |
| virtual void GetStudentAssignmentsWithMissedDueDate( |
| GetAssignmentsCallback callback) = 0; |
| virtual void GetStudentAssignmentsWithoutDueDate( |
| GetAssignmentsCallback callback) = 0; |
| |
| // Method called when the glanceables bubble UI closes. The client can use |
| // this as a signal to invalidate cached classroom data. |
| virtual void OnGlanceablesBubbleClosed() = 0; |
| }; |
| |
| } // namespace ash |
| |
| #endif // ASH_GLANCEABLES_CLASSROOM_GLANCEABLES_CLASSROOM_CLIENT_H_ |