• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import { BasePermissionStrategy } from '../base/BasePermissionStrategy';
17import { ButtonStatus, Permission, PermissionGroup, PermissionOption } from '../model/definition';
18import { CallerAppInfo, PermissionGroupConfig } from '../model/typedef';
19
20const groupConfig: PermissionGroupConfig = new PermissionGroupConfig({
21  groupName: PermissionGroup.CALENDAR,
22  permissions: [Permission.READ_CALENDAR, Permission.WRITE_CALENDAR, Permission.READ_WHOLE_CALENDAR, Permission.WRITE_WHOLE_CALENDAR],
23  icon: $r('app.media.ic_public_calendar'),
24  title: '',
25  reason: '',
26  buttonList: []
27})
28
29export class CalendarStrategy extends BasePermissionStrategy {
30  public override getPermissionGroupConfig(): PermissionGroupConfig {
31    return groupConfig;
32  }
33
34  public override getGroupTitle(appName: string, locationFlag: number): ResourceStr {
35    return $r('app.string.group_label_calendar', appName);
36  }
37
38  public override getReadAndWrite(permissions: Set<Permission>): ResourceStr {
39    let message: ResourceStr = '';
40    let isRead: boolean = permissions.has(Permission.READ_CALENDAR);
41    let isWrite: boolean = permissions.has(Permission.WRITE_CALENDAR);
42
43    if (isRead) {
44      message = $r('sys.string.ohos_lab_read_calendar');
45    }
46    if (isWrite) {
47      message = $r('sys.string.ohos_lab_write_calendar');
48    }
49    if (isRead && isWrite) {
50      message = '';
51    }
52    return message;
53  }
54
55  public override grantHandle(
56    permission: Permission, callerAppInfo: CallerAppInfo, locationFlag: number, buttonStatus: ButtonStatus
57  ): PermissionOption {
58    if (this.isPermissionPendingGrant(permission, callerAppInfo)) {
59      return PermissionOption.GRANT;
60    }
61    return PermissionOption.SKIP;
62  }
63
64  public override denyHandle(
65    permission: Permission, callerAppInfo: CallerAppInfo, locationFlag: number, buttonStatus: ButtonStatus
66  ): PermissionOption {
67    if (this.isPermissionPendingGrant(permission, callerAppInfo)) {
68      return PermissionOption.REVOKE;
69    }
70    return PermissionOption.SKIP;
71  }
72}