mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 05:25:40 +09:00
feat(settings): add mobile camera upload preference
This commit is contained in:
1 parent
f98a40062a
commit
14a935db81
5 files changed
+17
-12
No files matched your search
@@ -10,17 +10,15 @@ import {
|
||||
selectSyncedFieldMachineModel,
|
||||
transitionSyncedFieldMachineSnapshot,
|
||||
} from '@app/features/user/state/SyncedFieldStateMachine';
|
||||
import type {SyncedPreferences, SyncedPreferencesField} from '@app/features/user/state/SyncedPreferencesEngine';
|
||||
import {create, equals, type Message, type MessageInitShape, toBinary} from '@bufbuild/protobuf';
|
||||
import type {GenMessage} from '@bufbuild/protobuf/codegenv2';
|
||||
import type {SyncedPreferences} from '@fluxer/schema/src/domains/user/SyncedPreferencesCodec';
|
||||
import {comparer, reaction, runInAction} from 'mobx';
|
||||
|
||||
export {verifyRoundtripStability};
|
||||
|
||||
const logger = new Logger('SyncedField');
|
||||
|
||||
export type SyncedPreferencesField = Exclude<keyof SyncedPreferences, '$typeName' | '$unknown' | 'sanitizeUrls'>;
|
||||
|
||||
function isMessageSchema(value: unknown): value is GenMessage<Message> {
|
||||
return (
|
||||
value != null &&
|
||||
|
||||
@@ -10,8 +10,6 @@ export type SyncedPreferencesField = Exclude<keyof SyncedPreferences, '$typeName
|
||||
|
||||
export type {SyncedPreferences};
|
||||
|
||||
export type SyncedPreferencesSubField = Exclude<SyncedPreferencesField, 'sanitizeUrls'>;
|
||||
|
||||
interface TopLevelFieldChunk {
|
||||
field: number;
|
||||
bytes: Uint8Array;
|
||||
@@ -225,6 +223,10 @@ export function changedSyncedPreferenceFields(
|
||||
return toFieldNames(changedFieldNumbers(preferencesToBytes(left), preferencesToBytes(right)));
|
||||
}
|
||||
|
||||
export function syncedPreferencesEqual(left: SyncedPreferences, right: SyncedPreferences): boolean {
|
||||
return changedFieldNumbers(preferencesToBytes(left), preferencesToBytes(right)).length === 0;
|
||||
}
|
||||
|
||||
export function copySyncedPreferenceField(
|
||||
target: SyncedPreferences,
|
||||
source: SyncedPreferences,
|
||||
|
||||
@@ -34,6 +34,7 @@ import {
|
||||
SYNCED_PREFERENCES_FIELDS,
|
||||
type SyncedPreferences,
|
||||
type SyncedPreferencesField,
|
||||
syncedPreferencesEqual,
|
||||
} from '@app/features/user/state/SyncedPreferencesEngine';
|
||||
import type {StatusType} from '@fluxer/constants/src/StatusConstants';
|
||||
import {normalizeStatus, StatusTypes} from '@fluxer/constants/src/StatusConstants';
|
||||
@@ -54,8 +55,6 @@ import isPlainObject from 'lodash/isPlainObject';
|
||||
import snakeCase from 'lodash/snakeCase';
|
||||
import {action, makeAutoObservable, reaction, runInAction} from 'mobx';
|
||||
|
||||
type SyncedPreferencesSubField = Exclude<SyncedPreferencesField, 'sanitizeUrls'>;
|
||||
|
||||
function restoreSettingValue<K extends keyof UserSettings>(target: UserSettings, source: UserSettings, key: K): void {
|
||||
target[key] = source[key];
|
||||
}
|
||||
@@ -781,12 +780,12 @@ class UserSettingsState {
|
||||
);
|
||||
}
|
||||
|
||||
getSubPreference<F extends SyncedPreferencesSubField>(field: F): SyncedPreferences[F] | undefined {
|
||||
getSubPreference<F extends SyncedPreferencesField>(field: F): SyncedPreferences[F] | undefined {
|
||||
const value = this.syncedPreferences[field];
|
||||
return value === undefined ? undefined : value;
|
||||
}
|
||||
|
||||
async setSubPreference<F extends SyncedPreferencesSubField>(
|
||||
async setSubPreference<F extends SyncedPreferencesField>(
|
||||
field: F,
|
||||
value: NonNullable<SyncedPreferences[F]>,
|
||||
): Promise<void> {
|
||||
@@ -876,8 +875,8 @@ class UserSettingsState {
|
||||
for (const field of dirtyFields) {
|
||||
this.markSyncedPreferenceFieldDirty(field);
|
||||
}
|
||||
const wireChanged = changedSyncedPreferenceFields(nextWire, this.wireSyncedPreferences).length > 0;
|
||||
const localChanged = changedSyncedPreferenceFields(merged, this.syncedPreferences).length > 0;
|
||||
const wireChanged = !syncedPreferencesEqual(nextWire, this.wireSyncedPreferences);
|
||||
const localChanged = !syncedPreferencesEqual(merged, this.syncedPreferences);
|
||||
if (!wireChanged && !localChanged) {
|
||||
if (shouldSyncMigratedMessageGroupSpacing) {
|
||||
this.markSyncedPreferenceFieldDirty('accessibility');
|
||||
|
||||
Reference in new issue
Block a user