Files
discord-decomp/sources/modules/user_settings/UserSettingsProtoActionCreators.tsx
T
2026-07-27 16:20:00 +03:00

1650 lines
67 KiB
TypeScript

/* Metro module 1362; source: modules/user_settings/UserSettingsProtoActionCreators.tsx; dependencies: [5, 6, 7, 1348, 670, 661, 694, 44, 1350, 507, 672, 3, 1363, 587, 1351, 1314, 1349, 1364, 683, 1365, 1366, 1367, 2] */
function _fun15596(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#15596, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:6, offset: 0x00e36dca, size: 773 bytes, params: 8, frame: 28
var object2;
let env0_0 = require;
const _arrayLikeToArray_15599 = function(a0, a1) {
var r0;
var r1;
var r2;
var value3;
var length;
var value5;
var value = undefined;
var value2 = value == null;
reducibleJoin2: while (true) {
if (value2) {
r0 = value2;
break reducibleJoin2;
}
value3 = value > a0.length;
r0 = value3;
break reducibleJoin2;
}
reducibleJoin4: while (true) {
if (r0) {
length = a0.length;
r1 = length;
break reducibleJoin4;
}
r1 = value;
break reducibleJoin4;
}
value = (0, global.Array)(r1);
var value4 = 0;
if (value4 < r1) {
r2 = value4;
reducibleLoop5: while (true) {
value[r2] = a0[r2];
value5 = typeof r2 === 'bigint' ? r2 + 1n : +r2 + 1;
if (value5 < r1) {
r2 = value5;
continue reducibleLoop5;
}
break reducibleLoop5;
}
}
return value;
};
const closure = updateUserAllGuildSettings;
const closure2 = updateUserGuildSettings;
const closure3 = function(a0, a1) {
var env0_0 = a1;
var updateUserGuildSettingsBinding = updateUserGuildSettings;
var INFREQUENT_USER_ACTION = UserSettingsDelay.INFREQUENT_USER_ACTION;
return updateUserGuildSettingsBinding(a0, _fun15605, INFREQUENT_USER_ACTION);
};
const closure4 = function() {
return _updateRecurringDismissibleContentState.apply(this, arguments);
};
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
const env0_3 = importDefault(5) /* metro dependency 5 */;
const env0_4 = importDefault(6) /* metro dependency 6 */;
const env0_5 = importDefault(7) /* metro dependency 7 */;
const userSettingsProtoStore = importDefault(1348) /* metro dependency 1348: UserSettingsProtoStore */;
let value = require(670) /* metro dependency 670: UserSettingsConstants */;
const UserSettingsTypes = value.UserSettingsTypes;
let UserSettingsDelay = value.UserSettingsDelay;
value = require(661) /* metro dependency 661: Constants */;
const env0_9 = value.AbortCodes;
const env0_10 = value.Endpoints;
const env0_11 = value.AnalyticEvents;
UserSettingsDelay = (require(670) /* metro dependency 670: UserSettingsConstants */).UserSettingsDelay;
let Date = global.Date;
Date.now();
(importDefault(694) /* metro dependency 694: Dispatcher */).subscribe('CONNECTION_OPEN', function() {
var Date = global.Date;
Date.now();
});
(importDefault(694) /* metro dependency 694: Dispatcher */).subscribe('CONNECTION_CLOSED', function() {
var Date = global.Date;
Date.now();
});
let document = global.document;
if (typeof document !== 'undefined') {
document = global.document;
document.addEventListener('mousedown', function() {
});
document = global.document;
document.addEventListener('keydown', _fun15618);
}
value = _fun15619();
const PreloadedUserSettings = (require(1314) /* metro dependency 1314: preloaded_user_settings */).PreloadedUserSettings;
let PRELOADED_USER_SETTINGS = UserSettingsTypes.PRELOADED_USER_SETTINGS;
let value3 = new value(PreloadedUserSettings, PRELOADED_USER_SETTINGS);
const FrecencyUserSettings = (require(1349) /* metro dependency 1349: frecency_user_settings */).FrecencyUserSettings;
let FRECENCY_AND_FAVORITES_SETTINGS = UserSettingsTypes.FRECENCY_AND_FAVORITES_SETTINGS;
const value6 = new value(FrecencyUserSettings, FRECENCY_AND_FAVORITES_SETTINGS);
object2 = {};
PRELOADED_USER_SETTINGS = UserSettingsTypes.PRELOADED_USER_SETTINGS;
object2[PRELOADED_USER_SETTINGS] = value3;
FRECENCY_AND_FAVORITES_SETTINGS = UserSettingsTypes.FRECENCY_AND_FAVORITES_SETTINGS;
object2[FRECENCY_AND_FAVORITES_SETTINGS] = value6;
(require(2) /* metro dependency 2 */).fileFinishedImporting('modules/user_settings/UserSettingsProtoActionCreators.tsx');
exports.UserSettingsDelay = UserSettingsDelay;
exports.markUserSettingsLoadOkayForDevelopment = function() {
};
exports.UserSettingsProtoActionCreators = value;
exports.PreloadedUserSettingsActionCreators = value3;
exports.FrecencyUserSettingsActionCreators = value6;
exports.UserSettingsActionCreatorsByType = object2;
exports.updateUserAllGuildSettings = closure;
exports.updateUserGuildSettings = closure2;
exports.setDefaultGuildThemePreference = setDefaultGuildThemePreference;
exports.setGuildThemeSourcePreferenceOverride = closure3;
exports.clearGuildThemeSourcePreferenceOverride = function(a0) {
var setGuildThemeSourcePreferenceOverrideBinding = setGuildThemeSourcePreferenceOverride;
var UNSPECIFIED = require(dependencyMap[15]).GuildThemeSourcePreference.UNSPECIFIED;
return setGuildThemeSourcePreferenceOverrideBinding(a0, UNSPECIFIED);
};
exports.updateUserChannelSettings = function(a0, a1, a2, a3) {
var env0_0 = a1;
var env0_1 = a2;
return updateUserGuildSettings(a0, _fun15648, a3);
};
exports.addDismissedContent = addDismissedContent;
exports.updateRecurringDismissibleContentState = closure4;
exports.updateGuildDismissedContent = function() {
return _updateGuildDismissedContent.apply(this, arguments);
};
exports.removeDismissedContent = removeDismissedContent;
exports.removeDismissedRecurringContent = function(a0) {
return updateRecurringDismissibleContentState(a0, {'lastDismissedVersion': 0, 'lastDismissedAtMs': '0',
'lastDismissedObjectId': '0', 'numTimesDismissed': 0});
};
exports.clearGuildDismissedContents = function() {
var updateUserAllGuildSettingsBinding = updateUserAllGuildSettings;
var INFREQUENT_USER_ACTION = UserSettingsDelay.INFREQUENT_USER_ACTION;
return updateUserAllGuildSettingsBinding(_fun15657, INFREQUENT_USER_ACTION);
};
exports.clearDismissedContents = clearDismissedContents;
exports.checkAllDismissedContents = checkAllDismissedContents;
}
function _createForOfIteratorHelperLoose_15597(a0, a1) { // fn#15597, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:254, offset: 0x00e370cf, size: 370 bytes, params: 3, frame: 20
var r6;
var r9;
var r5;
var value3;
var regexp;
const env0_0 = a0;
const Symbol = global.Symbol;
let value = typeof Symbol !== 'undefined';
let r1 = value && a0[global.Symbol.iterator];
r1 = !r1 ? a0['@@iterator'] : r1;
if (r1) {
value = r1.call(a0);
return value.next.bind(value);
}
const Array = global.Array;
if (Array.isArray(a0)) {
if (r1) {
}
return _fun15598;
}
value = undefined;
if (a0) {
if (typeof a0 === 'string') {
value = _arrayLikeToArray_15599(a0, value);
r5 = value;
} else {
value3 = ({}).toString.call(a0).slice(8, -1);
r6 = value3 === 'Object' && a0.constructor;
r9 = r6 ? a0.constructor.name : value3;
if (r9 === 'Map') {
r6 = global.Array.from(a0);
} else if (r9 === 'Set') {
r6 = global.Array.from(a0);
} else if (r9 === 'Arguments') {
value = _arrayLikeToArray_15599(a0, value);
r6 = value;
} else {
regexp = RegExp('^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$', '');
if (regexp.test(r9)) {
value = _arrayLikeToArray_15599(a0, value);
r6 = value;
} else {
r6 = value;
}
}
r5 = r6;
}
} else {
r5 = value;
}
if (r5) {
if (r5) {
}
return _fun15598;
}
const TypeError = global.TypeError;
throw new TypeError('Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.');
}
function updateUserAllGuildSettings(a0, a1) { // fn#15600, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:7376, offset: 0x00e37241, size: 43 bytes, params: 3, frame: 15
const env0_0 = a0;
return env0_12.updateAsync('guilds', _fun15601, a1);
}
function updateUserGuildSettings(a0, a1, a2) { // fn#15602, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:7460, offset: 0x00e3726c, size: 50 bytes, params: 4, frame: 15
const env0_0 = a0;
const env0_1 = a1;
return env0_12.updateAsync('guilds', _fun15603, a2);
}
function setGuildThemeSourcePreferenceOverride(a0, a1) { // fn#15604, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:7586, offset: 0x00e372d4, size: 45 bytes, params: 3, frame: 15
const env0_0 = a1;
const updateUserGuildSettingsBinding = updateUserGuildSettings;
const INFREQUENT_USER_ACTION = UserSettingsDelay.INFREQUENT_USER_ACTION;
return updateUserGuildSettingsBinding(a0, function(a0) {
a0.guildThemeSourcePreference = require;
}, INFREQUENT_USER_ACTION);
}
function _updateRecurringDismissibleContentState() { // fn#15607, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:7854, offset: 0x00e37333, size: 48 bytes, params: 1, frame: 14
return env0_3(_fun15609).apply(this, arguments);
}
function _updateGuildDismissedContent() { // fn#15611, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:8158, offset: 0x00e373f3, size: 48 bytes, params: 1, frame: 14
return env0_3(_fun15613).apply(this, arguments);
}
function _fun15619() { // fn#15619, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:1492, offset: 0x00e374c3, size: 327 bytes, params: 1, frame: 18
const binding = env0_5;
const closure = UserSettingsProtoActionCreators;
const items2 = [{key: 'getEditInfo', value: value_15627}];
items2[1] = {key: 'getCurrentValue', value: function() {
return this.getEditInfo().proto;
}};
const env0_1 = env0_3(_fun15630);
items2[2] = {key: 'updateAsync', value: value_15631};
items2[3] = {key: 'markDirty', value: value_15632};
items2[4] = {key: 'dispatchChanges', value: value_15633};
items2[5] = {key: 'saveLastSendTime', value: function() {
var r3;
var property = require(dependencyMap[13]).Storage;
r3 = property.get('UserSettingsProtoLastWriteTimes') ?? ({});
property = this.type;
var Date = global.Date;
r3[property] = Date.now();
require(dependencyMap[13]).Storage.set('UserSettingsProtoLastWriteTimes', r3);
}};
items2[6] = {key: 'loadIfUncached', value: value_15635};
const env0_0 = env0_3(_fun15637);
items2[7] = {key: 'loadIfNecessary', value: value_15638};
items2[8] = {key: 'markDirtyFromMigration', value: value_15639};
items2[9] = {key: 'markDirtyIfHasPendingChange', value: function(a0) {
if (this.beforeSendCallbacks.some(_fun15641)) {
this.markDirty(this.ProtoClass.create(), {'dispatch': false, 'delaySeconds': 0, cleanup: a0});
}
}};
items2[10] = {key: 'scheduleSaveFromOfflineEdit', value: value_15642};
return binding(closure, items2);
}
function setDefaultGuildThemePreference(a0) { // fn#15644, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:8940, offset: 0x00e383ef, size: 50 bytes, params: 2, frame: 15
const env0_0 = a0;
const binding = env0_12;
const updateAsync = binding.updateAsync;
const INFREQUENT_USER_ACTION = UserSettingsDelay.INFREQUENT_USER_ACTION;
return Reflect.apply(updateAsync, binding, ['appearance', _fun15645, INFREQUENT_USER_ACTION]);
}
function updateUserChannelSettings(a0, a1, a2, a3) { // fn#15647, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:9499, offset: 0x00e384a6, size: 45 bytes, params: 5, frame: 15
const env0_0 = a1;
const env0_1 = a2;
return updateUserGuildSettings(a0, _fun15648, a3);
}
function addDismissedContent(a0) { // fn#15649, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:9658, offset: 0x00e38509, size: 62 bytes, params: 2, frame: 15
const env0_0 = a0;
trackDismissibleContentDismissedBeforeConnectionOpen(a0);
const binding = env0_12;
const updateAsync = binding.updateAsync;
const INFREQUENT_USER_ACTION = UserSettingsDelay.INFREQUENT_USER_ACTION;
return Reflect.apply(updateAsync, binding, ['userContent', _fun15651, INFREQUENT_USER_ACTION]);
}
function removeDismissedContent(a0) { // fn#15653, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:10501, offset: 0x00e38694, size: 50 bytes, params: 2, frame: 15
const env0_0 = a0;
const binding = env0_12;
const updateAsync = binding.updateAsync;
const INFREQUENT_USER_ACTION = UserSettingsDelay.INFREQUENT_USER_ACTION;
return Reflect.apply(updateAsync, binding, ['userContent', _fun15654, INFREQUENT_USER_ACTION]);
}
function clearGuildDismissedContents() { // fn#15656, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:10974, offset: 0x00e3874f, size: 34 bytes, params: 1, frame: 13
const updateUserAllGuildSettingsBinding = updateUserAllGuildSettings;
const INFREQUENT_USER_ACTION = UserSettingsDelay.INFREQUENT_USER_ACTION;
return updateUserAllGuildSettingsBinding(function(a0) {
var r1;
var property;
var value;
var value2;
var Uint8Array;
var value4;
var value6;
if (a0.guilds != null) {
property = global.Object;
value = property.values(a0.guilds);
value2 = 0;
if (value2 < value.length) {
r1 = value2;
while (true) {
property = value[r1];
if (property != null) {
property.guildDismissibleContentStates = {};
Uint8Array = global.Uint8Array;
value4 = new Uint8Array();
property.dismissedGuildContent = value4;
}
value6 = typeof r1 === 'bigint' ? r1 + 1n : +r1 + 1;
if (value6 < value.length) {
r1 = value6;
continue;
}
break;
}
}
}
}, INFREQUENT_USER_ACTION);
}
function clearDismissedContents() { // fn#15658, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:11276, offset: 0x00e387e6, size: 43 bytes, params: 1, frame: 15
const binding = env0_12;
const updateAsync = binding.updateAsync;
const INFREQUENT_USER_ACTION = UserSettingsDelay.INFREQUENT_USER_ACTION;
return Reflect.apply(updateAsync, binding, ['userContent', function(a0) {
var Uint8Array = global.Uint8Array;
a0.dismissedContents = new Uint8Array();
a0.recurringDismissibleContentStates = {};
}, INFREQUENT_USER_ACTION]);
}
function checkAllDismissedContents() { // fn#15660, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:11482, offset: 0x00e38842, size: 43 bytes, params: 1, frame: 15
const binding = env0_12;
const updateAsync = binding.updateAsync;
const INFREQUENT_USER_ACTION = UserSettingsDelay.INFREQUENT_USER_ACTION;
return Reflect.apply(updateAsync, binding, ['userContent', _fun15661, INFREQUENT_USER_ACTION]);
}
function _fun15603(a0) { // fn#15603, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:7531, offset: 0x00e3729e, size: 54 bytes, params: 2, frame: 15
let value = environment.__proto__;
value = require(1350) /* metro dependency 1350: UserSettingsUtils */;
return value.mutateUserGuildSettingsInternal(a0, env0_0, require);
}
function* _fun15609(a0, a1) { // fn#15609, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:7955, offset: 0x00e3736c, size: 81 bytes, params: 3, frame: 16
var environment;
if (true) {
var env0_0 = a0;
var env0_1 = a1;
value = environment.__proto__.__proto__;
var binding = env2_12;
var updateAsync = binding.updateAsync;
var INFREQUENT_USER_ACTION = env2_8.INFREQUENT_USER_ACTION;
yield Reflect.apply(updateAsync, binding, ['userContent', _fun15610, INFREQUENT_USER_ACTION]);
}
}
function* _fun15613(a0, a1, a2) { // fn#15613, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:8237, offset: 0x00e3742c, size: 76 bytes, params: 4, frame: 16
var environment;
if (true) {
var env0_0 = a0;
var env0_1 = a2;
value = environment.__proto__.__proto__;
var binding = env2_16;
var INFREQUENT_USER_ACTION = env2_8.INFREQUENT_USER_ACTION;
yield binding(a1, _fun15614, INFREQUENT_USER_ACTION);
}
}
function UserSettingsProtoActionCreators(a0, a1) { // fn#15620, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:1513, offset: 0x00e3760a, size: 149 bytes, params: 3, frame: 15
var environment;
let value = environment.__proto__;
env1_4(this, UserSettingsProtoActionCreators);
this.ProtoClass = a0;
this.type = a1;
this.beforeSendCallbacks = [];
this.lastSendTime = 0;
this.persistChanges = env1_3(_fun15622);
value = importDefault(3) /* metro dependency 3: Logger */;
const ProtoClass = this.ProtoClass;
value = new value(ProtoClass.typeName);
this.logger = value;
}
function value_15627() { // fn#15627, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:3335, offset: 0x00e37aea, size: 31 bytes, params: 1, frame: 9
const value = environment.__proto__;
return UserSettingsProtoStore.getFullState()[this.type];
}
function* _fun15630(a0, a1, a2, a3) { // fn#15630, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:3488, offset: 0x00e37b27, size: 277 bytes, params: 5, frame: 25
var logger;
if (true) {
yield this.loadIfNecessary();
if (false) {
return undefined;
}
value = environment.__proto__.__proto__;
var binding = env2_0;
var binding2 = env2_2;
var value4 = binding(binding2[12]);
var getProtoFieldClass = value4.getProtoFieldClass;
var ProtoClass = this.ProtoClass;
var value5 = Reflect.apply(getProtoFieldClass, value4, [ProtoClass, a0]);
var getCurrentValue = this.getCurrentValue;
var property = Reflect.apply(getCurrentValue, this, [])[a0];
var value6 = binding(binding2[12]);
var createModifiedProto = value6.createModifiedProto;
ProtoClass = this.ProtoClass;
var modifiedProto = Reflect.apply(createModifiedProto, value6, [property, a1, value5, ProtoClass, a0]);
if (modifiedProto != null) {
logger = this.logger;
logger.log('Updating ' + global.String(a0) + ' with delay ' + a2);
this.markDirty(modifiedProto, {delaySeconds: a2, jitter: a2 === env2_8.AUTOMATED || a2 === env2_8.DAILY,
onError: a3});
}
}
}
function value_15632(a0, a1) { // fn#15632, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:3907, offset: 0x00e37c3c, size: 690 bytes, params: 3, frame: 30
var r19;
var r6;
var r9;
var r12;
var delaySeconds;
var value2;
var value6;
var value7;
var Math;
var floor;
var value8;
var Math3;
var cleanupFuncs;
var items3;
var value11;
var errorCallbacks;
var items2;
var value13;
let value = environment.__proto__;
(importDefault(44) /* metro dependency 44 */)(true, 'this cannot run in the overlay');
const getEditInfo = this.getEditInfo;
const editInfo = Reflect.apply(getEditInfo, this, []).editInfo;
const object2 = {};
let timeout = editInfo.timeout;
object2.timeout = timeout;
if (editInfo.loaded) {
if (a1.dispatch !== false) {
(importDefault(694) /* metro dependency 694: Dispatcher */).dispatch({'type': 'USER_SETTINGS_PROTO_UPDATE',
'settings': null, 'partial': true, 'local': true, settings: {type: this.type, proto: a0}});
}
delaySeconds = a1.delaySeconds;
value2 = 0;
r6 = delaySeconds ?? value2;
timeout = object2.timeout;
r9 = timeout != null && r6 < editInfo.timeoutDelay;
r9 = r9 && !editInfo.rateLimited;
if (r9) {
global.clearTimeout(object2.timeout);
object2.timeout = undefined;
}
timeout = object2.timeout;
if (timeout == null) {
value6 = 10;
value7 = r6 * importDefault(dependencyMap[value6]).Millis.SECOND;
if (a1.jitter) {
Math = global.Math;
floor = Math.floor;
value8 = global.Math.random();
Math3 = global.Math;
r12 = value7 + Reflect.apply(floor, Math, [value8 * Math3.min(value7,
30 * importDefault(dependencyMap[value6]).Millis.SECOND)]);
} else {
r12 = value7;
}
this.logger.log('Scheduling save from markDirty');
object2.timeout = global.setTimeout(this.persistChanges, r12);
object2.timeoutDelay = r6;
r19 = value6;
}
if (a1.cleanup != null) {
cleanupFuncs = editInfo.cleanupFuncs;
items3 = [];
arraySpread(items3, a1.cleanup, arraySpread(items3, cleanupFuncs, value2, r19), r19);
object2.cleanupFuncs = items3;
}
value11 = a1.onError == null;
if (value11) {
r6 = value11;
} else {
errorCallbacks = editInfo.errorCallbacks;
r6 = errorCallbacks.includes(a1.onError);
}
if (!r6) {
errorCallbacks = editInfo.errorCallbacks;
items2 = [];
value13 = arraySpread(items2, errorCallbacks, value2, r19);
items2[value13] = a1.onError;
value13 + 1;
object2.errorCallbacks = items2;
}
if (editInfo.protoToSave == null) {
object2.protoToSave = a0;
} else {
value = require(1350) /* metro dependency 1350: UserSettingsUtils */;
object2.protoToSave = value.mergeTopLevelFields(this.ProtoClass, editInfo.protoToSave, a0);
}
this.dispatchChanges(object2);
return undefined;
}
const Error = global.Error;
throw Error('Cannot edit user settings proto because we have not yet loaded the stored version from the DB');
}
function value_15633(a0) { // fn#15633, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:4985, offset: 0x00e37eee, size: 74 bytes, params: 2, frame: 14
const value = environment.__proto__;
(importDefault(694) /* metro dependency 694: Dispatcher */).dispatch({type: 'USER_SETTINGS_PROTO_UPDATE_EDIT_INFO',
settings: {changes: a0, type: this.type}});
}
function value_15635(a0, a1) { // fn#15635, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:5269, offset: 0x00e37fb0, size: 54 bytes, params: 3, frame: 13
const value = environment.__proto__;
if (!(UserSettingsProtoStore.hasLoaded(a0) && a1 !== true)) {
this.loadIfNecessary(a1);
}
}
function* _fun15637(a0) { // fn#15637, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:5368, offset: 0x00e37fef, size: 493 bytes, params: 2, frame: 25
var dispatchChanges;
var object3;
var binding;
var binding2;
var property;
var value5;
var HTTP;
var get;
var USER_SETTINGS_PROTO;
var type;
var value6;
var value7;
var value8;
var value9;
var body;
var settings;
var binding3;
var value10;
var b64ToProto;
var ProtoClass;
var value11;
var value12;
var binding4;
var value13;
var binding5;
var property2;
var value14;
var runMigrations;
var value15;
var proto;
var isDirty;
var cleanupFuncs;
var value16;
var dispatch;
var object4;
var value17;
var markDirtyFromMigration;
var error;
let value = a0;
if (false) {
return undefined;
}
const getEditInfo = this.getEditInfo;
const editInfo = Reflect.apply(getEditInfo, this, []).editInfo;
if (value) {
this.logger.log('Loading proto');
this.dispatchChanges({loading: true});
} else {
if (editInfo.loaded) {
return undefined;
}
if (editInfo.loading) {
return undefined;
}
this.logger.log('Loading proto');
this.dispatchChanges({loading: true});
}
try {
binding = env2_0;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
binding2 = env2_2;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
property = binding2[9];
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
value5 = binding(property);
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
HTTP = value5.HTTP;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
get = HTTP.get;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
object3 = {};
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
binding = env2_10;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
USER_SETTINGS_PROTO = binding.USER_SETTINGS_PROTO;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
type = this.type;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
value6 = Reflect.apply(USER_SETTINGS_PROTO, binding, [type]);
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
object3.url = value6;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
object3.rejectWithError = false;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
value7 = Reflect.apply(get, HTTP, [object3]);
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
yield value7;
try {
value8 = undefined;
value9 = false;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
if (value9) {
return value8;
}
try {
body = value8.body;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
settings = body.settings;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
binding = env2_0;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
binding3 = env2_2;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
property = binding3[8];
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
value10 = binding(property);
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
b64ToProto = value10.b64ToProto;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
ProtoClass = this.ProtoClass;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
value11 = Reflect.apply(b64ToProto, value10, [ProtoClass, settings]);
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
value12 = value11 == null;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
if (value12) {
try {
dispatchChanges = this.dispatchChanges;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
object3 = {'loading': false, 'loaded': true};
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
Reflect.apply(dispatchChanges, this, [object3]);
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
return undefined;
}
try {
binding = env2_1;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
binding4 = env2_2;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
property = binding4[14];
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
value13 = binding(property);
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
type = this.type;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
property = value13[type];
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
binding5 = env2_0;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
property2 = binding4[8];
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
value14 = binding5(property2);
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
runMigrations = value14.runMigrations;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
value15 = Reflect.apply(runMigrations, value14, [value11, property]);
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
proto = value15.proto;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
isDirty = value15.isDirty;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
cleanupFuncs = value15.cleanupFuncs;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
property = binding4[6];
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
value16 = binding(property);
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
dispatch = value16.dispatch;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
object3 = {};
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
object3.type = 'USER_SETTINGS_PROTO_UPDATE';
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
object4 = {};
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
type = this.type;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
object4.type = type;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
object4.proto = value11;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
object3.settings = object4;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
object3.resetEditInfo = isDirty || value;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
object3.local = false;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
value = Reflect.apply(dispatch, value16, [object3]);
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
yield value;
try {
value = undefined;
value17 = false;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
if (value17) {
return value;
}
if (isDirty) {
try {
markDirtyFromMigration = this.markDirtyFromMigration;
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
try {
Reflect.apply(markDirtyFromMigration, this, [proto, cleanupFuncs]);
} catch (error) {
this.dispatchChanges({loading: false});
throw error;
}
}
return value11;
}
function value_15639(a0, a1) { // fn#15639, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:6146, offset: 0x00e381dc, size: 167 bytes, params: 3, frame: 19
(importDefault(44) /* metro dependency 44 */)(true, 'this cannot run in the overlay');
this.logger.log('Marking dirty due to migrates');
const defaultImport2 = importDefault(44) /* metro dependency 44 */;
const getEditInfo = this.getEditInfo;
defaultImport2(Reflect.apply(getEditInfo, this, []).editInfo.offlineEditDataVersion == null,
'offline changes are not supported with migrations');
const markDirty = this.markDirty;
const AUTOMATED = UserSettingsDelay.AUTOMATED;
Reflect.apply(markDirty, this, [a0, {cleanup: a1, dispatch: false, delaySeconds: AUTOMATED, jitter: true}]);
}
function value_15640(a0) { // fn#15640, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:6492, offset: 0x00e38283, size: 79 bytes, params: 2, frame: 14
const beforeSendCallbacks = this.beforeSendCallbacks;
if (beforeSendCallbacks.some(function(a0) {
return (0, a0.hasChanges)();
})) {
this.markDirty(this.ProtoClass.create(), {'dispatch': false, 'delaySeconds': 0, cleanup: a0});
}
}
function value_15642() { // fn#15642, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:6683, offset: 0x00e382e3, size: 268 bytes, params: 1, frame: 19
let value = environment.__proto__;
(importDefault(44) /* metro dependency 44 */)(true, 'this cannot run in the overlay');
this.logger.log('Scheduling save from offline edit');
const getEditInfo = this.getEditInfo;
const editInfo = Reflect.apply(getEditInfo, this, []).editInfo;
(importDefault(44) /* metro dependency 44 */)(editInfo.protoToSave != null, 'protoToSave cannot be null');
(importDefault(44) /* metro dependency 44 */)(editInfo.offlineEditDataVersion != null,
'offlineEditDataVersion cannot be null');
(importDefault(44) /* metro dependency 44 */)(editInfo.timeout == null, 'timeout must not be set already');
const Math = global.Math;
const floor = Math.floor;
const Math2 = global.Math;
value = Math2.random();
value = 5000 + Reflect.apply(floor, Math, [5000 * value]);
this.dispatchChanges({timeout: global.setTimeout(this.persistChanges, value), timeoutDelay: value});
}
function _fun15645(a0) { // fn#15645, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:9018, offset: 0x00e38421, size: 81 bytes, params: 2, frame: 13
if ((a0.defaultGuildThemePreference ?? (require(1314) /* metro dependency 1314: preloaded_user_settings */).GuildThemeSourcePreference.UNSPECIFIED) === env0_0) {
return false;
}
a0.defaultGuildThemePreference = env0_0;
}
function _fun15648(a0) { // fn#15648, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:9577, offset: 0x00e384d3, size: 54 bytes, params: 2, frame: 15
const value = environment.__proto__;
return (require(1350) /* metro dependency 1350: UserSettingsUtils */).mutateUserChannelSettingsInternal(a0, require,
importDefault);
}
function trackDismissibleContentDismissedBeforeConnectionOpen(a0) { // fn#15650, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:9697, owner: addDismissedContent.trackDismissibleContentDismissedBeforeConnectionOpen, offset: 0x00e38547, size: 196 bytes, params: 2, frame: 18
const hasLoaded = UserSettingsProtoStore.hasLoaded;
const PRELOADED_USER_SETTINGS = UserSettingsTypes.PRELOADED_USER_SETTINGS;
if (Reflect.apply(hasLoaded, UserSettingsProtoStore, [PRELOADED_USER_SETTINGS])) {
return undefined;
}
const userContent = UserSettingsProtoStore.settings.userContent;
const value2 = undefined;
const dismissedContents = userContent == null ? value2 : userContent.dismissedContents;
if (!(dismissedContents != null && (require(1364) /* metro dependency 1364: Uint8ArrayUtils */).hasBit(dismissedContents,
a0))) {
var defaultImport = importDefault(683) /* metro dependency 683: AnalyticsUtils */;
var track = defaultImport.track;
var DISMISSIBLE_CONTENT_DISMISSED_BEFORE_CONNECTION_OPEN = AnalyticEvents.DISMISSIBLE_CONTENT_DISMISSED_BEFORE_CONNECTION_OPEN;
var DismissibleContent = (require(1365) /* metro dependency 1365: dismissible_content */).DismissibleContent;
Reflect.apply(track, defaultImport, [DISMISSIBLE_CONTENT_DISMISSED_BEFORE_CONNECTION_OPEN,
{content_type: DismissibleContent[a0]}]);
}
return value2;
}
function _fun15651(a0) { // fn#15651, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:10120, offset: 0x00e3860b, size: 107 bytes, params: 2, frame: 18
let value = environment.__proto__;
const uint8ArrayUtilsModule = require(1364) /* metro dependency 1364: Uint8ArrayUtils */;
if (uint8ArrayUtilsModule.hasBit(a0.dismissedContents, env0_0)) {
return false;
}
value = uint8ArrayUtilsModule;
a0.dismissedContents = value.addBit(a0.dismissedContents, env0_0);
}
function _fun15654(a0) { // fn#15654, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:10572, offset: 0x00e386c6, size: 107 bytes, params: 2, frame: 18
let value = environment.__proto__;
const uint8ArrayUtilsModule = require(1364) /* metro dependency 1364: Uint8ArrayUtils */;
if (uint8ArrayUtilsModule.hasBit(a0.dismissedContents, env0_0)) {
value = uint8ArrayUtilsModule;
a0.dismissedContents = value.removeBit(a0.dismissedContents, env0_0);
return undefined;
}
return false;
}
function _fun15661(a0) { // fn#15661, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:11555, offset: 0x00e3886d, size: 238 bytes, params: 2, frame: 23
var r4;
var r5;
var r11;
var r1;
var moduleValue;
var isSingleUseDismissibleContent;
var recurringDismissibleContentStates;
var moduleValue2;
var getDismissedRecurringDismissibleContentState;
var moduleValue3;
const Uint8Array = global.Uint8Array;
let uint8Array = new Uint8Array();
const _createForOfIteratorHelperLoose_15597Binding = _createForOfIteratorHelperLoose_15597;
const ALL_DISMISSIBLE_CONTENT = (require(1366) /* metro dependency 1366: DismissibleContentTypes */).ALL_DISMISSIBLE_CONTENT;
const value3 = _createForOfIteratorHelperLoose_15597Binding(ALL_DISMISSIBLE_CONTENT);
const value4 = value3();
let done = value4.done;
if (done) {
r1 = uint8Array;
} else {
r4 = uint8Array;
r5 = value4;
while (true) {
uint8Array = r5.value;
moduleValue = require(1366) /* metro dependency 1366: DismissibleContentTypes */;
isSingleUseDismissibleContent = moduleValue.isSingleUseDismissibleContent;
if (Reflect.apply(isSingleUseDismissibleContent, moduleValue, [uint8Array])) {
moduleValue3 = require(1364) /* metro dependency 1364: Uint8ArrayUtils */;
uint8Array = moduleValue3.addBit(r4, uint8Array);
r11 = uint8Array;
} else {
recurringDismissibleContentStates = a0.recurringDismissibleContentStates;
moduleValue2 = require(1367) /* metro dependency 1367: DismissibleContentUtils */;
getDismissedRecurringDismissibleContentState = moduleValue2.getDismissedRecurringDismissibleContentState;
recurringDismissibleContentStates[uint8Array] = Reflect.apply(getDismissedRecurringDismissibleContentState,
moduleValue2, [uint8Array]);
r11 = r4;
}
uint8Array = value3();
done = uint8Array.done;
if (done) {
r1 = r11;
break;
}
r4 = r11;
r5 = uint8Array;
continue;
}
}
a0.dismissedContents = r1;
}
function _fun15610(a0) { // fn#15610, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:8012, offset: 0x00e373bd, size: 54 bytes, params: 2, frame: 14
const recurringDismissibleContentStates = a0.recurringDismissibleContentStates;
const binding = env0_0;
const object2 = {};
const recurringDismissibleContentStates2 = a0.recurringDismissibleContentStates;
copyDataProperties(object2, require, copyDataProperties(object2, recurringDismissibleContentStates2[binding],
recurringDismissibleContentStates2));
recurringDismissibleContentStates[binding] = object2;
}
function _fun15614(a0) { // fn#15614, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:8294, offset: 0x00e37478, size: 54 bytes, params: 2, frame: 14
const guildDismissibleContentStates = a0.guildDismissibleContentStates;
const binding = env0_0;
const object2 = {};
const guildDismissibleContentStates2 = a0.guildDismissibleContentStates;
copyDataProperties(object2, importDefault, copyDataProperties(object2, guildDismissibleContentStates2[binding],
guildDismissibleContentStates2));
guildDismissibleContentStates[binding] = object2;
}
function* _fun15622() { // fn#15622, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1489:1711, offset: 0x00e376a8, size: 1059 bytes, params: 1, frame: 30
var environment;
var r16;
var code;
var value3;
var binding;
var value4;
var value5;
var logger;
var log;
var getEditInfo;
var editInfo;
var protoToSave;
var beforeSendCallbacks;
var forEach;
var binding2;
var value6;
var protoToB64;
var ProtoClass;
var value7;
var saveLastSendTime;
var binding3;
var binding4;
var property;
var value8;
var HTTP;
var patch;
var object4;
var binding5;
var USER_SETTINGS_PROTO;
var type;
var value9;
var object5;
var offlineEditDataVersion;
var value10;
var value11;
var value12;
var body;
var out_of_date;
var value13;
var cleanupFuncs;
var closure;
var binding6;
var binding7;
var value14;
var b64ToProto;
var settings;
var value15;
var value16;
var binding8;
var value17;
var dispatch;
var object6;
var error;
var status;
var parseInt;
var headers;
var int;
var isNaN;
var value18;
var setTimeout;
var persistChanges;
var Math;
var min;
var binding9;
var binding10;
var Millis;
var SECOND;
var value19;
var value20;
var dispatchChanges;
var INVALID_USER_SETTINGS_DATA;
var errorCallbacks;
var loadIfNecessary;
let value = undefined;
if (true) {
reduciblePort80: while (true) {
exceptionLanding76: while (true) {
value = undefined;
var env0_0 = value;
value3 = environment.__proto__.__proto__.__proto__;
binding = env3_1;
value4 = binding(env3_2[7]);
value4(true, 'this cannot run in the overlay');
value5 = environment.__proto__;
binding = env1_0;
logger = binding.logger;
log = logger.log;
Reflect.apply(log, logger, ['Persisting proto']);
getEditInfo = binding.getEditInfo;
editInfo = Reflect.apply(getEditInfo, binding, []).editInfo;
env0_0 = editInfo;
protoToSave = editInfo.protoToSave;
if (protoToSave != null) {
binding = env1_0;
beforeSendCallbacks = binding.beforeSendCallbacks;
forEach = beforeSendCallbacks.forEach;
Reflect.apply(forEach, beforeSendCallbacks, [function({processProto}) {
return processProto(editInfo.protoToSave);
}]);
binding2 = env3_0;
value6 = binding2(env3_2[8]);
protoToB64 = value6.protoToB64;
ProtoClass = binding.ProtoClass;
protoToSave = editInfo.protoToSave;
value7 = Reflect.apply(protoToB64, value6, [ProtoClass, protoToSave]);
if (value7 != null) {
reducibleJoin5: while (true) {
if (value7 !== '') {
try {
binding = env1_0;
} catch (error) {
break exceptionLanding76;
}
try {
saveLastSendTime = binding.saveLastSendTime;
} catch (error) {
break exceptionLanding76;
}
try {
Reflect.apply(saveLastSendTime, binding, []);
} catch (error) {
break exceptionLanding76;
}
try {
binding3 = env3_0;
} catch (error) {
break exceptionLanding76;
}
try {
binding4 = env3_2;
} catch (error) {
break exceptionLanding76;
}
try {
property = binding4[9];
} catch (error) {
break exceptionLanding76;
}
try {
value8 = binding3(property);
} catch (error) {
break exceptionLanding76;
}
try {
HTTP = value8.HTTP;
} catch (error) {
break exceptionLanding76;
}
try {
patch = HTTP.patch;
} catch (error) {
break exceptionLanding76;
}
try {
object4 = {};
} catch (error) {
break exceptionLanding76;
}
try {
binding5 = env3_10;
} catch (error) {
break exceptionLanding76;
}
try {
USER_SETTINGS_PROTO = binding5.USER_SETTINGS_PROTO;
} catch (error) {
break exceptionLanding76;
}
try {
type = binding.type;
} catch (error) {
break exceptionLanding76;
}
try {
value9 = Reflect.apply(USER_SETTINGS_PROTO, binding5, [type]);
} catch (error) {
break exceptionLanding76;
}
try {
object4.url = value9;
} catch (error) {
break exceptionLanding76;
}
try {
object5 = {};
} catch (error) {
break exceptionLanding76;
}
try {
object5.settings = value7;
} catch (error) {
break exceptionLanding76;
}
try {
offlineEditDataVersion = editInfo.offlineEditDataVersion;
} catch (error) {
break exceptionLanding76;
}
try {
object5.required_data_version = offlineEditDataVersion;
} catch (error) {
break exceptionLanding76;
}
try {
object4.body = object5;
} catch (error) {
break exceptionLanding76;
}
try {
object4.rejectWithError = false;
} catch (error) {
break exceptionLanding76;
}
try {
value10 = Reflect.apply(patch, HTTP, [object4]);
} catch (error) {
break exceptionLanding76;
}
yield value10;
try {
value11 = undefined;
value12 = false;
} catch (error) {
break exceptionLanding76;
}
if (value12) {
return value11;
}
try {
body = value11.body;
} catch (error) {
break exceptionLanding76;
}
try {
out_of_date = body.out_of_date;
} catch (error) {
break exceptionLanding76;
}
reducibleJoin42: while (true) {
if (out_of_date) {
try {
binding = env1_0;
} catch (error) {
break exceptionLanding76;
}
try {
logger = binding.logger;
} catch (error) {
break exceptionLanding76;
}
try {
log = logger.log;
} catch (error) {
break exceptionLanding76;
}
try {
Reflect.apply(log, logger, ['Proto was out of date, discarding changes']);
} catch (error) {
break exceptionLanding76;
}
break reducibleJoin42;
}
break reducibleJoin42;
}
try {
binding = env1_0;
} catch (error) {
break exceptionLanding76;
}
try {
getEditInfo = binding.getEditInfo;
} catch (error) {
break exceptionLanding76;
}
try {
value13 = Reflect.apply(getEditInfo, binding, []);
} catch (error) {
break exceptionLanding76;
}
try {
editInfo = value13.editInfo;
} catch (error) {
break exceptionLanding76;
}
try {
cleanupFuncs = editInfo.cleanupFuncs;
} catch (error) {
break exceptionLanding76;
}
try {
forEach = cleanupFuncs.forEach;
} catch (error) {
break exceptionLanding76;
}
try {
closure = _fun15624;
} catch (error) {
break exceptionLanding76;
}
try {
Reflect.apply(forEach, cleanupFuncs, [closure]);
} catch (error) {
break exceptionLanding76;
}
try {
binding6 = env3_0;
} catch (error) {
break exceptionLanding76;
}
try {
binding7 = env3_2;
} catch (error) {
break exceptionLanding76;
}
try {
property = binding7[8];
} catch (error) {
break exceptionLanding76;
}
try {
value14 = binding6(property);
} catch (error) {
break exceptionLanding76;
}
try {
b64ToProto = value14.b64ToProto;
} catch (error) {
break exceptionLanding76;
}
try {
ProtoClass = binding.ProtoClass;
} catch (error) {
break exceptionLanding76;
}
try {
settings = body.settings;
} catch (error) {
break exceptionLanding76;
}
try {
value15 = Reflect.apply(b64ToProto, value14, [ProtoClass, settings]);
} catch (error) {
break exceptionLanding76;
}
try {
value16 = value15 == null;
} catch (error) {
break exceptionLanding76;
}
if (value16) {
return value;
}
try {
binding = env3_1;
} catch (error) {
break exceptionLanding76;
}
try {
binding8 = env3_2;
} catch (error) {
break exceptionLanding76;
}
try {
property = binding8[6];
} catch (error) {
break exceptionLanding76;
}
try {
value17 = binding(property);
} catch (error) {
break exceptionLanding76;
}
try {
dispatch = value17.dispatch;
} catch (error) {
break exceptionLanding76;
}
try {
object4 = {'type': 'USER_SETTINGS_PROTO_UPDATE', 'settings': null,
'resetEditInfo': true,
'wasSaved': true,
'local': false};
} catch (error) {
break exceptionLanding76;
}
try {
object6 = {};
} catch (error) {
break exceptionLanding76;
}
try {
object6.proto = value15;
} catch (error) {
break exceptionLanding76;
}
try {
binding = env1_0;
} catch (error) {
break exceptionLanding76;
}
try {
type = binding.type;
} catch (error) {
break exceptionLanding76;
}
try {
object6.type = type;
} catch (error) {
break exceptionLanding76;
}
try {
object4.settings = object6;
} catch (error) {
break exceptionLanding76;
}
try {
Reflect.apply(dispatch, value17, [object4]);
} catch (error) {
break exceptionLanding76;
}
break reduciblePort80;
}
break reducibleJoin5;
}
}
logger = env1_0.logger;
log = logger.log;
Reflect.apply(log, logger, ['Not persisting proto because there is nothing to change']);
break reduciblePort80;
}
logger = env1_0.logger;
log = logger.log;
Reflect.apply(log, logger, ['Not persisting proto because the proto was null']);
break reduciblePort80;
}
status = error.status;
if (status !== 429) {
status = error.status;
reducibleJoin87: while (true) {
reducibleJoin85: while (true) {
if (status !== 400) {
break reducibleJoin85;
}
body = error.body;
reducibleJoin84: while (true) {
if (body == null) {
code = value;
break reducibleJoin84;
}
code = body.code;
break reducibleJoin84;
}
INVALID_USER_SETTINGS_DATA = env3_9.INVALID_USER_SETTINGS_DATA;
if (code === INVALID_USER_SETTINGS_DATA) {
binding = env1_0;
logger = binding.logger;
log = logger.log;
Reflect.apply(log, logger, ['Reloading do to invalid data']);
getEditInfo = binding.getEditInfo;
editInfo = Reflect.apply(getEditInfo, binding, []).editInfo;
errorCallbacks = editInfo.errorCallbacks;
forEach = errorCallbacks.forEach;
Reflect.apply(forEach, errorCallbacks, [_fun15625]);
loadIfNecessary = binding.loadIfNecessary;
Reflect.apply(loadIfNecessary, binding, [true]);
break reducibleJoin87;
}
break reducibleJoin85;
}
binding = env1_0;
logger = binding.logger;
log = logger.log;
Reflect.apply(log, logger, ['Unknown user settings error']);
getEditInfo = binding.getEditInfo;
editInfo = Reflect.apply(getEditInfo, binding, []).editInfo;
errorCallbacks = editInfo.errorCallbacks;
forEach = errorCallbacks.forEach;
Reflect.apply(forEach, errorCallbacks, [_fun15626]);
break reducibleJoin87;
}
throw error;
}
logger = env1_0.logger;
log = logger.log;
Reflect.apply(log, logger, ['Rate limited, scheduling retry']);
parseInt = global.parseInt;
headers = error.headers;
int = parseInt(headers['retry-after']);
isNaN = global.isNaN;
reducibleJoin79: while (true) {
if (isNaN(int)) {
value18 = 60;
r16 = value18;
break reducibleJoin79;
}
r16 = int;
break reducibleJoin79;
}
setTimeout = global.setTimeout;
binding = env1_0;
persistChanges = binding.persistChanges;
Math = global.Math;
min = Math.min;
binding9 = env3_1;
binding10 = env3_2;
Millis = binding9(binding10[10]).Millis;
SECOND = Millis.SECOND;
value19 = 30 * SECOND;
Millis = binding9(binding10[10]).Millis;
SECOND = Millis.SECOND;
value20 = setTimeout(persistChanges, Reflect.apply(min, Math, [value19, r16 * SECOND]));
dispatchChanges = binding.dispatchChanges;
Reflect.apply(dispatchChanges, binding, [{rateLimited: true, timeout: value20}]);
break reduciblePort80;
}
}
return value;
}