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_ci 16048147e0Sopenharmony_ciimport SettingModel from '../model/SettingsModel'; 17048147e0Sopenharmony_ci 18048147e0Sopenharmony_cilet mSettingModel = new SettingModel(); 19048147e0Sopenharmony_ciimport HiLog from '../utils/HiLog'; 20048147e0Sopenharmony_ciimport common from '../data/commonData'; 21048147e0Sopenharmony_ciimport LooseObject from '../data/LooseObject' 22048147e0Sopenharmony_ciimport MmsPreferences from '../utils/MmsPreferences'; 23048147e0Sopenharmony_ci 24048147e0Sopenharmony_ciconst TAG = 'SettingService'; 25048147e0Sopenharmony_ci 26048147e0Sopenharmony_ciexport default { 27048147e0Sopenharmony_ci 28048147e0Sopenharmony_ci /** 29048147e0Sopenharmony_ci * Set Initial Value 30048147e0Sopenharmony_ci * 31048147e0Sopenharmony_ci * @param {Object} callback 32048147e0Sopenharmony_ci */ 33048147e0Sopenharmony_ci setOnSettingValueListener(callback) { 34048147e0Sopenharmony_ci let result: LooseObject = { 35048147e0Sopenharmony_ci 'integrationSwitch': false, 36048147e0Sopenharmony_ci 'maliciousWebSwitch': false, 37048147e0Sopenharmony_ci 'showContactSwitch': false, 38048147e0Sopenharmony_ci }; 39048147e0Sopenharmony_ci mSettingModel.setOnSettingValueListener(settingValue => { 40048147e0Sopenharmony_ci if (settingValue.integrationSwitch === common.bool.TRUE || settingValue.integrationSwitch === '') { 41048147e0Sopenharmony_ci result.integrationSwitch = true; 42048147e0Sopenharmony_ci } 43048147e0Sopenharmony_ci if (settingValue.maliciousWebSwitch === common.bool.TRUE || settingValue.integrationSwitch === '') { 44048147e0Sopenharmony_ci result.maliciousWebSwitch = true; 45048147e0Sopenharmony_ci } 46048147e0Sopenharmony_ci if (settingValue.showContactSwitch === common.bool.TRUE || settingValue.integrationSwitch === '') { 47048147e0Sopenharmony_ci result.showContactSwitch = true; 48048147e0Sopenharmony_ci } 49048147e0Sopenharmony_ci }); 50048147e0Sopenharmony_ci callback(result); 51048147e0Sopenharmony_ci }, 52048147e0Sopenharmony_ci 53048147e0Sopenharmony_ci /** 54048147e0Sopenharmony_ci * Restore Page Defaults 55048147e0Sopenharmony_ci * 56048147e0Sopenharmony_ci * @param {Object} callback 57048147e0Sopenharmony_ci */ 58048147e0Sopenharmony_ci restoreSwitchValue(callback) { 59048147e0Sopenharmony_ci mSettingModel.restoreSwitchValueToDefault(callback); 60048147e0Sopenharmony_ci }, 61048147e0Sopenharmony_ci 62048147e0Sopenharmony_ci /** 63048147e0Sopenharmony_ci * Update related values 64048147e0Sopenharmony_ci * @param code Updated code. 65048147e0Sopenharmony_ci * @param actionData Updated Value 66048147e0Sopenharmony_ci * @param callback 67048147e0Sopenharmony_ci * @return 68048147e0Sopenharmony_ci */ 69048147e0Sopenharmony_ci updateSettingValue(code, actionData, callback) { 70048147e0Sopenharmony_ci switch (code) { 71048147e0Sopenharmony_ci case common.route.MESSAGE_CODE_UPDATE_DELIVERY_REPORTS_VALUE: 72048147e0Sopenharmony_ci // Delivery Report 73048147e0Sopenharmony_ci mSettingModel.updateSwitchValue(common.string.KEY_OF_DELIVERY_REPORT_SWITCH, 74048147e0Sopenharmony_ci actionData.intValue, callback); 75048147e0Sopenharmony_ci break; 76048147e0Sopenharmony_ci case common.route.MESSAGE_CODE_UPDATE_AUTO_RETRIEVE_MMS_VALUE: 77048147e0Sopenharmony_ci // Automatically downloading MMs 78048147e0Sopenharmony_ci mSettingModel.updateSwitchValue(common.string.KEY_OF_AUTO_RETRIEVE_SWITCH, 79048147e0Sopenharmony_ci actionData.intValue, callback); 80048147e0Sopenharmony_ci break; 81048147e0Sopenharmony_ci case common.route.MESSAGE_CODE_UPDATE_RECALL_MESSAGES_VALUE: 82048147e0Sopenharmony_ci // Cancel Sending 83048147e0Sopenharmony_ci mSettingModel.updateSwitchValue(common.string.KEY_OF_RECALL_MESSAGE_SWITCH, 84048147e0Sopenharmony_ci actionData.booleanValue, callback); 85048147e0Sopenharmony_ci break; 86048147e0Sopenharmony_ci case common.route.MESSAGE_CODE_UPDATE_AUTO_DELETE_INFO_MESSAGES_VALUE: 87048147e0Sopenharmony_ci // Automatically delete notification information 88048147e0Sopenharmony_ci mSettingModel.updateSwitchValue(common.string.KEY_OF_AUTO_DELETE_INFO_SWITCH, 89048147e0Sopenharmony_ci actionData.booleanValue, callback); 90048147e0Sopenharmony_ci break; 91048147e0Sopenharmony_ci case common.route.MESSAGE_CODE_UPDATE_ARCHIVE_INFO_MESSAGES_VALUE: 92048147e0Sopenharmony_ci // Notification information integration 93048147e0Sopenharmony_ci mSettingModel.updateSwitchValue(common.string.KEY_OF_INTEGRATION_SWITCH, 94048147e0Sopenharmony_ci actionData.booleanValue, callback); 95048147e0Sopenharmony_ci break; 96048147e0Sopenharmony_ci case common.route.MESSAGE_CODE_UPDATE_MALICIOUS_WEBSITE_IDENTIFICATION_VALUE: 97048147e0Sopenharmony_ci // Malicious Website Identification 98048147e0Sopenharmony_ci mSettingModel.updateSwitchValue(common.string.KEY_OF_MALICIOUS_WEB_SWITCH, 99048147e0Sopenharmony_ci actionData.booleanValue, callback); 100048147e0Sopenharmony_ci break; 101048147e0Sopenharmony_ci case common.route.MESSAGE_CODE_UPDATE_SHOW_CONTACT_PROFILE_PICS_VALUE: 102048147e0Sopenharmony_ci // Display contact avatar 103048147e0Sopenharmony_ci mSettingModel.updateSwitchValue(common.string.KEY_OF_SHOW_CONTACT_SWITCH, 104048147e0Sopenharmony_ci actionData.booleanValue, callback); 105048147e0Sopenharmony_ci break; 106048147e0Sopenharmony_ci default: 107048147e0Sopenharmony_ci HiLog.w(TAG, 'updateSettingValue, code is not exit'); 108048147e0Sopenharmony_ci } 109048147e0Sopenharmony_ci }, 110048147e0Sopenharmony_ci 111048147e0Sopenharmony_ci /** 112048147e0Sopenharmony_ci * Obtains the switch value on the advanced settings page. 113048147e0Sopenharmony_ci * 114048147e0Sopenharmony_ci * @param {Object} callback 115048147e0Sopenharmony_ci */ 116048147e0Sopenharmony_ci getAdvancedPageSwitchValue(callback) { 117048147e0Sopenharmony_ci mSettingModel.getAdvancedPageSwitchValue(callback); 118048147e0Sopenharmony_ci }, 119048147e0Sopenharmony_ci 120048147e0Sopenharmony_ci /** 121048147e0Sopenharmony_ci * Updating SMSC Numbers 122048147e0Sopenharmony_ci * @param actionData 123048147e0Sopenharmony_ci * @param callback 124048147e0Sopenharmony_ci * @return 125048147e0Sopenharmony_ci */ 126048147e0Sopenharmony_ci updateSmscNumber(actionData) { 127048147e0Sopenharmony_ci mSettingModel.updateSmscNumber(actionData, result => { 128048147e0Sopenharmony_ci if (result.code == common.int.SUCCESS) { 129048147e0Sopenharmony_ci HiLog.i(TAG, 'updateSmscNumber, success'); 130048147e0Sopenharmony_ci } else { 131048147e0Sopenharmony_ci HiLog.w(TAG, 'updateSmscNumber, fail'); 132048147e0Sopenharmony_ci } 133048147e0Sopenharmony_ci }); 134048147e0Sopenharmony_ci }, 135048147e0Sopenharmony_ci 136048147e0Sopenharmony_ci /** 137048147e0Sopenharmony_ci * Share the selected content in the SMSC dialog box. 138048147e0Sopenharmony_ci * @param actionData 139048147e0Sopenharmony_ci * @param callback 140048147e0Sopenharmony_ci * @return 141048147e0Sopenharmony_ci */ 142048147e0Sopenharmony_ci shareSmsEnterSelectedText(actionData) { 143048147e0Sopenharmony_ci // The sharing API is not provided. 144048147e0Sopenharmony_ci mSettingModel.shareSmsEnterSelectedText(actionData, result => { 145048147e0Sopenharmony_ci if (result.code == common.int.SUCCESS) { 146048147e0Sopenharmony_ci HiLog.i(TAG, 'shareSmsEnterSelectedText, success'); 147048147e0Sopenharmony_ci } else { 148048147e0Sopenharmony_ci } 149048147e0Sopenharmony_ci }); 150048147e0Sopenharmony_ci }, 151048147e0Sopenharmony_ci 152048147e0Sopenharmony_ci /** 153048147e0Sopenharmony_ci * Values of the notification information integration switch and whether to display contact avatars 154048147e0Sopenharmony_ci */ 155048147e0Sopenharmony_ci getSettingFlagForConvListPage() { 156048147e0Sopenharmony_ci let result: LooseObject = { 157048147e0Sopenharmony_ci 'isShowContactHeadIcon': false, 158048147e0Sopenharmony_ci 'hasAggregate': false, 159048147e0Sopenharmony_ci 'recallMessagesFlag': false, 160048147e0Sopenharmony_ci }; 161048147e0Sopenharmony_ci mSettingModel.getSettingValue(settingValue => { 162048147e0Sopenharmony_ci if (settingValue.code === common.int.SUCCESS) { 163048147e0Sopenharmony_ci HiLog.i(TAG, 'getSettingFlagForConvListPage, Success'); 164048147e0Sopenharmony_ci if (settingValue.abilityResult.isShowContactHeadIcon === common.bool.TRUE || 165048147e0Sopenharmony_ci settingValue.abilityResult.isShowContactHeadIcon === '') { 166048147e0Sopenharmony_ci result.isShowContactHeadIcon = true; 167048147e0Sopenharmony_ci } 168048147e0Sopenharmony_ci if (settingValue.abilityResult.hasAggregate == common.bool.TRUE || 169048147e0Sopenharmony_ci settingValue.abilityResult.hasAggregate === '') { 170048147e0Sopenharmony_ci result.hasAggregate = true; 171048147e0Sopenharmony_ci } 172048147e0Sopenharmony_ci if (settingValue.abilityResult.recallMessagesFlag == common.bool.TRUE || 173048147e0Sopenharmony_ci settingValue.abilityResult.recallMessagesFlag === '') { 174048147e0Sopenharmony_ci result.recallMessagesFlag = true; 175048147e0Sopenharmony_ci } 176048147e0Sopenharmony_ci } else { 177048147e0Sopenharmony_ci HiLog.w(TAG, 'getSettingFlagForConvListPage, fail'); 178048147e0Sopenharmony_ci } 179048147e0Sopenharmony_ci }); 180048147e0Sopenharmony_ci return result; 181048147e0Sopenharmony_ci }, 182048147e0Sopenharmony_ci 183048147e0Sopenharmony_ci /** 184048147e0Sopenharmony_ci * Determine whether a delivery report is required. 185048147e0Sopenharmony_ci * 186048147e0Sopenharmony_ci * @param {boolean} isMms MMS or not 187048147e0Sopenharmony_ci */ 188048147e0Sopenharmony_ci judgeIsDeliveryReport(isMms) { 189048147e0Sopenharmony_ci let deliveryReportSwitch = MmsPreferences.getInstance().getValueOfDeliveryReportSwitch(); 190048147e0Sopenharmony_ci if (deliveryReportSwitch === common.DELIVERY_REPORTS.DISABLED) { 191048147e0Sopenharmony_ci return false; 192048147e0Sopenharmony_ci } 193048147e0Sopenharmony_ci // For MMS and SMS messages, true is returned. 194048147e0Sopenharmony_ci if (deliveryReportSwitch === common.DELIVERY_REPORTS.SMS_AND_MMS) { 195048147e0Sopenharmony_ci return true; 196048147e0Sopenharmony_ci } 197048147e0Sopenharmony_ci // A delivery report is available only when a message is sent. 198048147e0Sopenharmony_ci if (deliveryReportSwitch == common.DELIVERY_REPORTS.SMS && !isMms) { 199048147e0Sopenharmony_ci return true; 200048147e0Sopenharmony_ci } 201048147e0Sopenharmony_ci // Delivery reports are available only when MMS messages are sent. 202048147e0Sopenharmony_ci if (deliveryReportSwitch == common.DELIVERY_REPORTS.MMS && isMms) { 203048147e0Sopenharmony_ci return true; 204048147e0Sopenharmony_ci } 205048147e0Sopenharmony_ci return false; 206048147e0Sopenharmony_ci }, 207048147e0Sopenharmony_ci 208048147e0Sopenharmony_ci /** 209048147e0Sopenharmony_ci * Calculate Selected Values 210048147e0Sopenharmony_ci * @param mmsList 211048147e0Sopenharmony_ci * @param isAllSelect 212048147e0Sopenharmony_ci */ 213048147e0Sopenharmony_ci calculateChecked(simMessageList, isAllSelect) { 214048147e0Sopenharmony_ci let count = 0; 215048147e0Sopenharmony_ci let checkedList = []; 216048147e0Sopenharmony_ci let result: LooseObject = {}; 217048147e0Sopenharmony_ci let switchOff = false; 218048147e0Sopenharmony_ci for (let item of simMessageList) { 219048147e0Sopenharmony_ci // If you select all 220048147e0Sopenharmony_ci if (isAllSelect || item.isCbChecked) { 221048147e0Sopenharmony_ci switchOff = true; 222048147e0Sopenharmony_ci } 223048147e0Sopenharmony_ci if (switchOff) { 224048147e0Sopenharmony_ci checkedList.push(item); 225048147e0Sopenharmony_ci count++; 226048147e0Sopenharmony_ci } 227048147e0Sopenharmony_ci switchOff = false; 228048147e0Sopenharmony_ci } 229048147e0Sopenharmony_ci result.count = count; 230048147e0Sopenharmony_ci result.checkedList = checkedList; 231048147e0Sopenharmony_ci return result; 232048147e0Sopenharmony_ci }, 233048147e0Sopenharmony_ci}