use variables for common settings key

also turn off typing message by default
This commit is contained in:
Audric Ackermann 2021-12-21 08:16:22 +11:00
parent 1424e13a68
commit dd52ad336f
No known key found for this signature in database
GPG Key ID: 999F434D76324AD4
7 changed files with 28 additions and 23 deletions

View File

@ -8,7 +8,6 @@ const MESSAGE_COUNT_KEY = 'sqlMigration_messageCount';
const UNPROCESSED_LAST_INDEX_KEY = 'sqlMigration_unprocessedLastIndex'; const UNPROCESSED_LAST_INDEX_KEY = 'sqlMigration_unprocessedLastIndex';
// Public API // Public API
exports.READ_RECEIPT_CONFIGURATION_SYNC = 'read-receipt-configuration-sync';
exports.getAttachmentMigrationLastProcessedIndex = connection => exports.getAttachmentMigrationLastProcessedIndex = connection =>
exports._getItem(connection, LAST_PROCESSED_INDEX_KEY); exports._getItem(connection, LAST_PROCESSED_INDEX_KEY);

View File

@ -2,6 +2,7 @@ import React from 'react';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
// tslint:disable-next-line: no-submodule-imports // tslint:disable-next-line: no-submodule-imports
import useUpdate from 'react-use/lib/useUpdate'; import useUpdate from 'react-use/lib/useUpdate';
import { SettingsKey } from '../../../data/settings-key';
import { CallManager } from '../../../session/utils'; import { CallManager } from '../../../session/utils';
import { sessionPassword, updateConfirmModal } from '../../../state/ducks/modalDialog'; import { sessionPassword, updateConfirmModal } from '../../../state/ducks/modalDialog';
import { toggleMessageRequests } from '../../../state/ducks/userConfig'; import { toggleMessageRequests } from '../../../state/ducks/userConfig';
@ -11,10 +12,6 @@ import { PasswordAction } from '../../dialog/SessionPasswordDialog';
import { SessionSettingButtonItem, SessionToggleWithDescription } from '../SessionSettingListItem'; import { SessionSettingButtonItem, SessionToggleWithDescription } from '../SessionSettingListItem';
const settingsReadReceipt = 'read-receipt-setting';
const settingsTypingIndicator = 'typing-indicators-setting';
const settingsAutoUpdate = 'auto-update';
const toggleCallMediaPermissions = async (triggerUIUpdate: () => void) => { const toggleCallMediaPermissions = async (triggerUIUpdate: () => void) => {
const currentValue = window.getCallMediaPermissions(); const currentValue = window.getCallMediaPermissions();
if (!currentValue) { if (!currentValue) {
@ -87,33 +84,33 @@ export const SettingsCategoryPrivacy = (props: {
)} )}
<SessionToggleWithDescription <SessionToggleWithDescription
onClickToggle={() => { onClickToggle={() => {
const old = Boolean(window.getSettingValue(settingsReadReceipt)); const old = Boolean(window.getSettingValue(SettingsKey.settingsReadReceipt));
window.setSettingValue(settingsReadReceipt, !old); window.setSettingValue(SettingsKey.settingsReadReceipt, !old);
forceUpdate(); forceUpdate();
}} }}
title={window.i18n('readReceiptSettingTitle')} title={window.i18n('readReceiptSettingTitle')}
description={window.i18n('readReceiptSettingDescription')} description={window.i18n('readReceiptSettingDescription')}
active={window.getSettingValue(settingsReadReceipt)} active={window.getSettingValue(SettingsKey.settingsReadReceipt)}
/> />
<SessionToggleWithDescription <SessionToggleWithDescription
onClickToggle={() => { onClickToggle={() => {
const old = Boolean(window.getSettingValue(settingsTypingIndicator)); const old = Boolean(window.getSettingValue(SettingsKey.settingsTypingIndicator));
window.setSettingValue(settingsTypingIndicator, !old); window.setSettingValue(SettingsKey.settingsTypingIndicator, !old);
forceUpdate(); forceUpdate();
}} }}
title={window.i18n('typingIndicatorsSettingTitle')} title={window.i18n('typingIndicatorsSettingTitle')}
description={window.i18n('typingIndicatorsSettingDescription')} description={window.i18n('typingIndicatorsSettingDescription')}
active={Boolean(window.getSettingValue(settingsTypingIndicator))} active={Boolean(window.getSettingValue(SettingsKey.settingsTypingIndicator))}
/> />
<SessionToggleWithDescription <SessionToggleWithDescription
onClickToggle={() => { onClickToggle={() => {
const old = Boolean(window.getSettingValue(settingsAutoUpdate)); const old = Boolean(window.getSettingValue(SettingsKey.settingsAutoUpdate));
window.setSettingValue(settingsAutoUpdate, !old); window.setSettingValue(SettingsKey.settingsAutoUpdate, !old);
forceUpdate(); forceUpdate();
}} }}
title={window.i18n('autoUpdateSettingTitle')} title={window.i18n('autoUpdateSettingTitle')}
description={window.i18n('autoUpdateSettingDescription')} description={window.i18n('autoUpdateSettingDescription')}
active={Boolean(window.getSettingValue(settingsAutoUpdate))} active={Boolean(window.getSettingValue(SettingsKey.settingsAutoUpdate))}
/> />
{hasMessageRequestFlag && ( {hasMessageRequestFlag && (
<SessionToggleWithDescription <SessionToggleWithDescription

5
ts/data/settings-key.ts Normal file
View File

@ -0,0 +1,5 @@
const settingsReadReceipt = 'read-receipt-setting';
const settingsTypingIndicator = 'typing-indicators-setting';
const settingsAutoUpdate = 'auto-update';
export const SettingsKey = { settingsReadReceipt, settingsTypingIndicator, settingsAutoUpdate };

View File

@ -52,6 +52,7 @@ import {
ReplyingToMessageProps, ReplyingToMessageProps,
SendMessageType, SendMessageType,
} from '../components/conversation/composition/CompositionBox'; } from '../components/conversation/composition/CompositionBox';
import { SettingsKey } from '../data/settings-key';
export enum ConversationTypeEnum { export enum ConversationTypeEnum {
GROUP = 'group', GROUP = 'group',
@ -1069,7 +1070,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
} }
if (this.isPrivate() && read.length && options.sendReadReceipts) { if (this.isPrivate() && read.length && options.sendReadReceipts) {
window?.log?.info(`Sending ${read.length} read receipts`); window?.log?.info(`Sending ${read.length} read receipts`);
if (window.storage.get('read-receipt-setting')) { if (window.storage.get(SettingsKey.settingsReadReceipt)) {
await Promise.all( await Promise.all(
_.map(_.groupBy(read, 'sender'), async (receipts, sender) => { _.map(_.groupBy(read, 'sender'), async (receipts, sender) => {
const timestamps = _.map(receipts, 'timestamp').filter(t => !!t) as Array<number>; const timestamps = _.map(receipts, 'timestamp').filter(t => !!t) as Array<number>;
@ -1558,7 +1559,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
// for typing to happen, this must be a private unblocked active convo, and the settings to be on // for typing to happen, this must be a private unblocked active convo, and the settings to be on
if ( if (
!this.isActive() || !this.isActive() ||
!window.storage.get('typing-indicators-setting') || !window.storage.get(SettingsKey.settingsTypingIndicator) ||
this.isBlocked() || this.isBlocked() ||
!this.isPrivate() !this.isPrivate()
) { ) {

View File

@ -51,6 +51,7 @@ import { isUsFromCache } from '../session/utils/User';
import { perfEnd, perfStart } from '../session/utils/Performance'; import { perfEnd, perfStart } from '../session/utils/Performance';
import { AttachmentTypeWithPath } from '../types/Attachment'; import { AttachmentTypeWithPath } from '../types/Attachment';
import _ from 'lodash'; import _ from 'lodash';
import { SettingsKey } from '../data/settings-key';
// tslint:disable: cyclomatic-complexity // tslint:disable: cyclomatic-complexity
/** /**
@ -393,7 +394,7 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
} }
const readBy = this.get('read_by') || []; const readBy = this.get('read_by') || [];
if (window.storage.get('read-receipt-setting') && readBy.length > 0) { if (window.storage.get(SettingsKey.settingsReadReceipt) && readBy.length > 0) {
return 'read'; return 'read';
} }
const sent = this.get('sent'); const sent = this.get('sent');

View File

@ -23,6 +23,7 @@ import {
deleteMessagesFromSwarmAndCompletelyLocally, deleteMessagesFromSwarmAndCompletelyLocally,
deleteMessagesFromSwarmAndMarkAsDeletedLocally, deleteMessagesFromSwarmAndMarkAsDeletedLocally,
} from '../interactions/conversations/unsendingInteractions'; } from '../interactions/conversations/unsendingInteractions';
import { SettingsKey } from '../data/settings-key';
export async function handleContentMessage(envelope: EnvelopePlus, messageHash?: string) { export async function handleContentMessage(envelope: EnvelopePlus, messageHash?: string) {
try { try {
@ -415,7 +416,7 @@ function onReadReceipt(readAt: any, timestamp: any, reader: any) {
window?.log?.info('read receipt', reader, timestamp); window?.log?.info('read receipt', reader, timestamp);
if (!storage.get('read-receipt-setting')) { if (!storage.get(SettingsKey.settingsReadReceipt)) {
return; return;
} }
@ -463,7 +464,7 @@ async function handleTypingMessage(
await removeFromCache(envelope); await removeFromCache(envelope);
// We don't do anything with incoming typing messages if the setting is disabled // We don't do anything with incoming typing messages if the setting is disabled
if (!window.storage.get('typing-indicators-setting')) { if (!window.storage.get(SettingsKey.settingsTypingIndicator)) {
return; return;
} }

View File

@ -8,6 +8,7 @@ import { trigger } from '../shims/events';
import { actions as userActions } from '../state/ducks/user'; import { actions as userActions } from '../state/ducks/user';
import { mn_decode, mn_encode } from '../session/crypto/mnemonic'; import { mn_decode, mn_encode } from '../session/crypto/mnemonic';
import { ConversationTypeEnum } from '../models/conversation'; import { ConversationTypeEnum } from '../models/conversation';
import { SettingsKey } from '../data/settings-key';
/** /**
* Might throw * Might throw
@ -137,8 +138,8 @@ async function createAccount(identityKeyPair: any) {
window.textsecure.storage.remove('number_id'), window.textsecure.storage.remove('number_id'),
window.textsecure.storage.remove('device_name'), window.textsecure.storage.remove('device_name'),
window.textsecure.storage.remove('userAgent'), window.textsecure.storage.remove('userAgent'),
window.textsecure.storage.remove('read-receipt-setting'), window.textsecure.storage.remove(SettingsKey.settingsReadReceipt),
window.textsecure.storage.remove('typing-indicators-setting'), window.textsecure.storage.remove(SettingsKey.settingsTypingIndicator),
window.textsecure.storage.remove('regionCode'), window.textsecure.storage.remove('regionCode'),
window.textsecure.storage.remove('local_attachment_encrypted_key'), window.textsecure.storage.remove('local_attachment_encrypted_key'),
]); ]);
@ -151,10 +152,10 @@ async function createAccount(identityKeyPair: any) {
await window.textsecure.storage.put('password', password); await window.textsecure.storage.put('password', password);
// disable read-receipt by default // disable read-receipt by default
await window.textsecure.storage.put('read-receipt-setting', false); await window.textsecure.storage.put(SettingsKey.settingsReadReceipt, false);
// Enable typing indicators by default // Enable typing indicators by default
await window.textsecure.storage.put('typing-indicators-setting', true); await window.textsecure.storage.put(SettingsKey.settingsTypingIndicator, false);
await window.textsecure.storage.user.setNumberAndDeviceId(pubKeyString, 1); await window.textsecure.storage.user.setNumberAndDeviceId(pubKeyString, 1);
} }