1048147e0Sopenharmony_ci/**
2048147e0Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3048147e0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4048147e0Sopenharmony_ci * you may not use this file except in compliance with the License.
5048147e0Sopenharmony_ci * You may obtain a copy of the License at
6048147e0Sopenharmony_ci *
7048147e0Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8048147e0Sopenharmony_ci *
9048147e0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10048147e0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11048147e0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12048147e0Sopenharmony_ci * See the License for the specific language governing permissions and
13048147e0Sopenharmony_ci * limitations under the License.
14048147e0Sopenharmony_ci */
15048147e0Sopenharmony_ciimport LooseObject from '../../data/LooseObject'
16048147e0Sopenharmony_ciimport MmsBoolean from '../../data/MmsBoolean'
17048147e0Sopenharmony_ciimport HiLog from '../../utils/HiLog';
18048147e0Sopenharmony_ciimport router from '@system.router';
19048147e0Sopenharmony_ci// JS Common constants
20048147e0Sopenharmony_ciimport common from '../../data/commonData';
21048147e0Sopenharmony_ciimport settingService from '../../service/SettingService'
22048147e0Sopenharmony_ci
23048147e0Sopenharmony_ciconst TAG = 'SettingsController';
24048147e0Sopenharmony_ci
25048147e0Sopenharmony_ciexport default class SettingsController {
26048147e0Sopenharmony_ci    private static sInstance: SettingsController;
27048147e0Sopenharmony_ci    // Notification information integration
28048147e0Sopenharmony_ci    integrationSwitch: MmsBoolean = new MmsBoolean(true);
29048147e0Sopenharmony_ci    // Malicious website selection
30048147e0Sopenharmony_ci    maliciousWebSwitch: boolean = false;
31048147e0Sopenharmony_ci    // Verification code security protection
32048147e0Sopenharmony_ci    verificationCodeSwitch: boolean = false;
33048147e0Sopenharmony_ci    // Display contact avatar
34048147e0Sopenharmony_ci    showContactSwitch: boolean = true
35048147e0Sopenharmony_ci
36048147e0Sopenharmony_ci    static getInstance() {
37048147e0Sopenharmony_ci        if (SettingsController.sInstance == null) {
38048147e0Sopenharmony_ci            SettingsController.sInstance = new SettingsController();
39048147e0Sopenharmony_ci        }
40048147e0Sopenharmony_ci        return SettingsController.sInstance;
41048147e0Sopenharmony_ci    }
42048147e0Sopenharmony_ci
43048147e0Sopenharmony_ci    constructor() {
44048147e0Sopenharmony_ci        HiLog.i(TAG, 'constructor, start');
45048147e0Sopenharmony_ci        this.getSettingPageSwitchValue();
46048147e0Sopenharmony_ci    }
47048147e0Sopenharmony_ci
48048147e0Sopenharmony_ci    onInit() {
49048147e0Sopenharmony_ci        HiLog.i(TAG, 'onInit, start');
50048147e0Sopenharmony_ci    };
51048147e0Sopenharmony_ci
52048147e0Sopenharmony_ci    onShow() {
53048147e0Sopenharmony_ci        HiLog.i(TAG, 'onShow, start');
54048147e0Sopenharmony_ci    };
55048147e0Sopenharmony_ci
56048147e0Sopenharmony_ci    // Indicates whether to initialize the setting page.
57048147e0Sopenharmony_ci    getSettingPageSwitchValue() {
58048147e0Sopenharmony_ci        HiLog.i(TAG, 'getSettingPageSwitchValue, start');
59048147e0Sopenharmony_ci        let that = this;
60048147e0Sopenharmony_ci        settingService.setOnSettingValueListener(function (result) {
61048147e0Sopenharmony_ci            that.integrationSwitch.value = result.integrationSwitch;
62048147e0Sopenharmony_ci            that.maliciousWebSwitch = result.maliciousWebSwitch;
63048147e0Sopenharmony_ci            that.showContactSwitch = result.showContactSwitch;
64048147e0Sopenharmony_ci        });
65048147e0Sopenharmony_ci    };
66048147e0Sopenharmony_ci
67048147e0Sopenharmony_ci    // Notification information integration
68048147e0Sopenharmony_ci    integration(isOn: boolean) {
69048147e0Sopenharmony_ci        let messageCode = common.route.MESSAGE_CODE_UPDATE_ARCHIVE_INFO_MESSAGES_VALUE;
70048147e0Sopenharmony_ci        if (this.integrationSwitch.value != isOn) {
71048147e0Sopenharmony_ci            globalThis.needToUpdate = true;
72048147e0Sopenharmony_ci        }
73048147e0Sopenharmony_ci        let actionData: LooseObject = {};
74048147e0Sopenharmony_ci        this.integrationSwitch.value = isOn;
75048147e0Sopenharmony_ci        if (this.integrationSwitch.value) {
76048147e0Sopenharmony_ci            actionData.booleanValue = common.bool.TRUE;
77048147e0Sopenharmony_ci        } else {
78048147e0Sopenharmony_ci            actionData.booleanValue = common.bool.FALSE;
79048147e0Sopenharmony_ci        }
80048147e0Sopenharmony_ci        this.updateSettingPageSwitchValue(messageCode, actionData);
81048147e0Sopenharmony_ci    };
82048147e0Sopenharmony_ci
83048147e0Sopenharmony_ci    // Malicious website selection
84048147e0Sopenharmony_ci    maliciousWeb(e) {
85048147e0Sopenharmony_ci        HiLog.i(TAG, 'maliciousWeb, checked = ' + e.checked);
86048147e0Sopenharmony_ci        let messageCode = common.route.MESSAGE_CODE_UPDATE_MALICIOUS_WEBSITE_IDENTIFICATION_VALUE;
87048147e0Sopenharmony_ci        let actionData: LooseObject = {};
88048147e0Sopenharmony_ci        this.maliciousWebSwitch = e.checked;
89048147e0Sopenharmony_ci        if (this.maliciousWebSwitch) {
90048147e0Sopenharmony_ci            actionData.booleanValue = common.bool.TRUE;
91048147e0Sopenharmony_ci        } else {
92048147e0Sopenharmony_ci            actionData.booleanValue = common.bool.FALSE;
93048147e0Sopenharmony_ci        }
94048147e0Sopenharmony_ci        this.updateSettingPageSwitchValue(messageCode, actionData);
95048147e0Sopenharmony_ci    };
96048147e0Sopenharmony_ci
97048147e0Sopenharmony_ci    // Go to the Message Ring page. Choose Settings > Sound and Vibration > Message Ring.
98048147e0Sopenharmony_ci    jumpToMessageTonePage() {
99048147e0Sopenharmony_ci        HiLog.i(TAG, 'jumpToMessageTonePage')
100048147e0Sopenharmony_ci    };
101048147e0Sopenharmony_ci
102048147e0Sopenharmony_ci    // Display a contact's avatar
103048147e0Sopenharmony_ci    showContact(e) {
104048147e0Sopenharmony_ci        HiLog.i(TAG, 'showContact, checked = ' + e.checked);
105048147e0Sopenharmony_ci        let messageCode = common.route.MESSAGE_CODE_UPDATE_SHOW_CONTACT_PROFILE_PICS_VALUE;
106048147e0Sopenharmony_ci        let actionData: LooseObject = {};
107048147e0Sopenharmony_ci        this.showContactSwitch = e.checked;
108048147e0Sopenharmony_ci        if (this.showContactSwitch) {
109048147e0Sopenharmony_ci            actionData.booleanValue = common.bool.TRUE;
110048147e0Sopenharmony_ci        } else {
111048147e0Sopenharmony_ci            actionData.booleanValue = common.bool.FALSE;
112048147e0Sopenharmony_ci        }
113048147e0Sopenharmony_ci        this.updateSettingPageSwitchValue(messageCode, actionData);
114048147e0Sopenharmony_ci    };
115048147e0Sopenharmony_ci
116048147e0Sopenharmony_ci    // Restore the default values on the settings page.
117048147e0Sopenharmony_ci    restoreSettingsPageSwitchValue() {
118048147e0Sopenharmony_ci        let that = this;
119048147e0Sopenharmony_ci        settingService.restoreSwitchValue(function (result) {
120048147e0Sopenharmony_ci            if (result.code === common.int.SUCCESS) {
121048147e0Sopenharmony_ci                that.integrationSwitch.value = true;
122048147e0Sopenharmony_ci                that.maliciousWebSwitch = false;
123048147e0Sopenharmony_ci                that.showContactSwitch = true;
124048147e0Sopenharmony_ci                globalThis.needToUpdate = true;
125048147e0Sopenharmony_ci                HiLog.i(TAG, 'restoreSettingsPageSwitchValue, success');
126048147e0Sopenharmony_ci            } else {
127048147e0Sopenharmony_ci                HiLog.w(TAG, 'restoreSettingsPageSwitchValue, failed');
128048147e0Sopenharmony_ci            }
129048147e0Sopenharmony_ci        });
130048147e0Sopenharmony_ci    };
131048147e0Sopenharmony_ci
132048147e0Sopenharmony_ci    // Back button
133048147e0Sopenharmony_ci    back() {
134048147e0Sopenharmony_ci        router.back();
135048147e0Sopenharmony_ci    };
136048147e0Sopenharmony_ci
137048147e0Sopenharmony_ci    // Advanced page redirection
138048147e0Sopenharmony_ci    advancedSetting() {
139048147e0Sopenharmony_ci        HiLog.i(TAG, 'advancedSetting')
140048147e0Sopenharmony_ci        router.push({
141048147e0Sopenharmony_ci            uri: 'pages/settings/advancedSettings/advancedSettings'
142048147e0Sopenharmony_ci        });
143048147e0Sopenharmony_ci    };
144048147e0Sopenharmony_ci
145048147e0Sopenharmony_ci    // Update Switch Value
146048147e0Sopenharmony_ci    updateSettingPageSwitchValue(messageCode, actionData) {
147048147e0Sopenharmony_ci        HiLog.i(TAG, 'updateSettingPageSwitchValue,  messageCode = ' + messageCode);
148048147e0Sopenharmony_ci        settingService.updateSettingValue(messageCode, actionData, function (result) {
149048147e0Sopenharmony_ci            if (result.code == common.int.SUCCESS) {
150048147e0Sopenharmony_ci                HiLog.i(TAG, 'updateSettingPageSwitchValue, success');
151048147e0Sopenharmony_ci            } else {
152048147e0Sopenharmony_ci                HiLog.w(TAG, 'updateSettingPageSwitchValue, failed');
153048147e0Sopenharmony_ci            }
154048147e0Sopenharmony_ci        });
155048147e0Sopenharmony_ci    };
156048147e0Sopenharmony_ci}