const is = require('@sindresorhus/is'); const Errors = require('./types/errors'); const Settings = require('./settings'); exports.syncReadReceiptConfiguration = async ({ deviceId, sendRequestConfigurationSyncMessage, storage, }) => { if (!is.string(deviceId)) { throw new TypeError('"deviceId" is required'); } if (!is.function(sendRequestConfigurationSyncMessage)) { throw new TypeError('"sendRequestConfigurationSyncMessage" is required'); } if (!is.object(storage)) { throw new TypeError('"storage" is required'); } const isPrimaryDevice = deviceId === '1'; if (isPrimaryDevice) { return { status: 'skipped', reason: 'isPrimaryDevice', }; } const settingName = Settings.READ_RECEIPT_CONFIGURATION_SYNC; const hasPreviouslySynced = Boolean(storage.get(settingName)); if (hasPreviouslySynced) { return { status: 'skipped', reason: 'hasPreviouslySynced', }; } try { await sendRequestConfigurationSyncMessage(); storage.put(settingName, true); } catch (error) { return { status: 'error', reason: 'failedToSendSyncMessage', error: Errors.toLogFormat(error), }; } return { status: 'complete', }; };