decord/beta/source/modules/notifications/native/NativeNotificationsManager.tsx
2026-10-07 22:43:51 +00:00

574 lines
23 KiB
TypeScript

// Module ID: 18001
// Function ID: 18002
// Name: NativeNotificationsManager
// Dependencies: [5, 17, 7121, 4905, 1085, 3, 18002, 8966, 11, 6613, 1369, 7876, 1252, 2]
// Module 18001 (NativeNotificationsManager)
import LoggerDefault from "Logger" /* 3 */;
import react_native from "react-native" /* 17 */;
import Constants from "Constants" /* 1085 */;
import PlatformUtils from "PlatformUtils" /* 1369 */;
import ClearChannelNotificationsOnAppForegroundExperiment from "ClearChannelNotificationsOnAppForegroundExperiment" /* 18002 */;
import _asyncToGenerator from "_asyncToGenerator" /* 5 */;
import GuildReadStateStore from "GuildReadStateStore" /* 7121 */;
import ReadStateStore from "ReadStateStore" /* 4905 */;
import AutomaticLifecycleManager from "AutomaticLifecycleManager" /* 6613 */;
import size from "module_2" /* 2 */;
let c1, c2, c4, c5, closure_12, closure_3, constants, logger, map;
function getDeliveredNotifications() {
return obj(...arguments);
}
let obj = function _getDeliveredNotifications() {
obj = _asyncToGenerator(async (arg0, value) => {
let obj3;
if (c2 === 2) {
c2 = 3;
throw new TypeError("Generator functions may not be called on executing generators");
} else if (tmp3 === 3) {
if (arg0 === 1) {
throw value;
} else if (arg0 === 2) {
const obj4 = { value, done: true };
return obj4;
} else {
return { value: "IconComponent", done: null };
}
} else {
try {
c2 = 2;
if (0 === c1) {
if (arg0 === 1) {
c2 = 3;
throw value;
} else if (arg0 === 2) {
c2 = 3;
const obj5 = { value, done: true };
return obj5;
} else {
let closure_0 = tmp;
const obj2 = ClearChannelNotificationsOnAppForegroundExperiment;
const tmp7 = dependencyMap;
if (obj2.shouldClearChannelNotificationsOnAppForeground({ location: "getDeliveredNotifications" })) {
c1 = 1;
c2 = 1;
const obj6 = { value: obj3.getDeliveredNotifications(), done: false };
obj3 = require("PushNotification");
return obj6;
}
}
} else if (arg0 === 1) {
c2 = 3;
throw value;
} else if (arg0 === 2) {
c2 = 3;
obj = { value, done: true };
return obj;
} else {
closure_9 = value;
}
c2 = 3;
return { value: "IconComponent", done: null };
} catch (tmp9) {
c2 = 3;
throw tmp9;
}
}
});
return obj(...arguments);
};
function updateAndClearStaleNotifications() {
return obj(...arguments);
}
obj = function _updateAndClearStaleNotifications() {
obj = _asyncToGenerator(async (arg0, value) => {
function clearStaleNotifications() {
obj = closure_1_0(closure_1_2[6]);
const tmp = closure_1_2;
if (obj.shouldClearChannelNotificationsOnAppForeground({ location: "clearStaleNotifications" })) {
const found = closure_1_9.filter((userInfo) => {
if (null != userInfo.userInfo) {
if (typeof userInfo.userInfo === "object") {
if (typeof userInfo.userInfo.channel_id !== "string") {
return false;
} else if (typeof userInfo.userInfo.notif_instance_id !== "string") {
return false;
} else {
let message_id = userInfo.userInfo.notif_instance_id;
if ("MESSAGE_CREATE" === userInfo.userInfo.type) {
if (typeof userInfo.userInfo.message_id !== "string") {
return false;
} else {
message_id = userInfo.userInfo.message_id;
}
} else if ("GENERIC_PUSH_NOTIFICATION_SENT" !== userInfo.userInfo.type) {
return false;
} else if ("REACTIONS_PUSH_NOTIFICATION" !== userInfo.userInfo.notification_type) {
return false;
}
if (null != message_id) {
if (typeof message_id === "string") {
const ackMessageIdResult = closure_1_6.ackMessageId(userInfo.userInfo.channel_id);
let tmp3 = null != ackMessageIdResult;
if (tmp3) {
obj = closure_1_1(closure_1_2[8]);
tmp3 = obj.compare(ackMessageIdResult, message_id) > 0;
}
return tmp3;
}
}
return false;
}
}
}
return false;
});
const mapped = found.map((identifier) => identifier.identifier);
if (mapped.length > 0) {
let tmp3 = closure_1_1;
const obj2 = closure_1_1(tmp[7]);
const result = obj2.removeDeliveredNotifications(mapped);
closure_1_10();
}
}
}
if (c2 === 2) {
c2 = 3;
const str = "Generator functions may not be called on executing generators";
throw new TypeError("Generator functions may not be called on executing generators");
} else if (tmp2 === 3) {
if (arg0 === 1) {
throw value;
} else if (arg0 === 2) {
let obj2 = { value, done: true };
return obj2;
} else {
return { value: "IconComponent", done: null };
}
} else {
try {
c2 = 2;
let tmp3 = c1;
if (0 === c1) {
if (arg0 === 1) {
c2 = 3;
throw value;
} else if (arg0 === 2) {
c2 = 3;
const obj3 = { value, done: true };
return obj3;
} else {
let c0 = 0;
c1 = 1;
c2 = 1;
const obj4 = { value: getDeliveredNotifications(), done: false };
return obj4;
}
} else if (arg0 === 1) {
c2 = 3;
throw value;
} else if (arg0 === 2) {
c2 = 3;
obj = { value, done: true };
return obj;
} else {
const tmp5 = clearStaleNotifications();
c2 = 3;
return { value: "IconComponent", done: null };
}
} catch (tmp7) {
c2 = 3;
throw tmp7;
}
}
});
return obj(...arguments);
};
const NativeModules = react_native.NativeModules;
const AnalyticEvents = Constants.AnalyticEvents;
const tmp2 = new LoggerDefault("NativeNotificationsManager");
let closure_8 = tmp2;
let closure_9 = [];
class NativeNotificationsManager extends AutomaticLifecycleManager {
constructor() {
let totalMentionCount;
let applyArgumentsResult = HermesBuiltin.applyArguments(this, new.target);
applyArgumentsResult.handleAck = function handleAck(channelId) {
channelId = channelId.channelId;
obj = PlatformUtils;
const tmp = dependencyMap;
if (obj.isIOS()) {
const obj2 = require("PushNotification");
const result = obj2.setApplicationIconBadgeNumber(totalMentionCount.getTotalMentionCount());
}
if (null != channelId) {
const DCDNotificationManager = NativeModules.DCDNotificationManager;
if (DCDNotificationManager != null) {
const result1 = DCDNotificationManager.clearNotificationsForChannel(channelId);
}
}
};
require = applyArgumentsResult;
applyArgumentsResult.handlePostConnectionOpen = _asyncToGenerator(async function(arg0, value) {
let background_str;
let closure_5;
let str1;
if (logger === 2) {
logger = 3;
throw new TypeError("Generator functions may not be called on executing generators");
} else if (tmp3 === 3) {
if (arg0 === 1) {
throw value;
} else if (arg0 === 2) {
let obj3 = { value, done: true };
return obj3;
} else {
return { value: "IconComponent", done: null };
}
} else {
let tmp75;
let c6;
try {
let str3;
let processing_notifications;
let processing_notification_states;
let closure_6;
let PUSH_NOTIFICATION_RECEIVED;
let moveAndReadData;
let normalizeTimestampToMs;
logger = 2;
const tmp4 = constants;
if (0 === constants) {
if (arg0 === 1) {
logger = 3;
throw value;
} else if (arg0 === 2) {
logger = 3;
let obj4 = { value, done: true };
return obj4;
} else {
let closure_4 = tmp;
str3 = undefined;
processing_notifications = undefined;
processing_notification_states = undefined;
map = undefined;
tmp75 = undefined;
closure_6 = undefined;
PUSH_NOTIFICATION_RECEIVED = undefined;
logger = undefined;
const obj15 = applyArgumentsResult(background_str[10]);
if (obj15.isIOS()) {
updateAndClearStaleNotifications();
} else {
let result = require.handleSetCallNotificationExperiment();
}
c6 = 1;
moveAndReadData = function moveAndReadData() {
return closure_1_10(...arguments);
};
obj = function _moveAndReadData() {
obj = PUSH_NOTIFICATION_RECEIVED(function*(arg0, value) {
let obj3;
let obj6;
let obj9;
closure_0 = arg0;
closure_1 = value;
if (c5 === 2) {
c5 = 3;
throw new TypeError("Generator functions may not be called on executing generators");
} else if (tmp3 === 3) {
if (arg0 === 1) {
throw value;
} else if (arg0 === 2) {
const obj2 = { value, done: true };
return obj2;
} else {
return { value: "IconComponent", done: null };
}
} else {
try {
let closure_2;
c5 = 2;
if (0 === c4) {
if (arg0 === 1) {
c5 = 3;
throw value;
} else if (arg0 === 2) {
c5 = 3;
const obj4 = { value, done: true };
return obj4;
} else {
closure_3 = tmp4;
closure_2 = tmp;
c4 = 1;
c5 = 1;
const obj5 = { value: obj9.removeFile(str3, closure_1), done: false };
obj9 = closure_0(closure_2[11]);
return obj5;
}
} else if (1 === c4) {
if (arg0 === 1) {
c5 = 3;
throw value;
} else if (arg0 === 2) {
c5 = 3;
const obj7 = { value, done: true };
return obj7;
} else {
c4 = 2;
c5 = 1;
const obj8 = { value: obj6.moveFile(closure_131_0, closure_0, closure_1), done: false };
obj6 = closure_0(closure_2[11]);
return obj8;
}
} else {
let tmp5;
if (2 === c4) {
if (arg0 === 1) {
c5 = 3;
throw value;
} else if (arg0 === 2) {
c5 = 3;
const obj10 = { value, done: true };
return obj10;
} else {
tmp5 = null;
if (value) {
c4 = 3;
c5 = 1;
const obj11 = { value: obj3.readFile(closure_131_0, closure_1, "utf8"), done: false };
obj3 = closure_0(closure_2[11]);
return obj11;
}
}
} else if (arg0 === 1) {
c5 = 3;
throw value;
} else {
tmp5 = value;
if (arg0 === 2) {
c5 = 3;
obj = { value, done: true };
return obj;
}
}
c5 = 3;
const obj12 = { value: tmp5, done: true };
return obj12;
}
} catch (tmp24) {
c5 = 3;
throw tmp24;
}
}
});
return obj(...arguments);
};
normalizeTimestampToMs = function normalizeTimestampToMs(timestamp) {
if (null != timestamp) {
let rounded;
if (typeof timestamp === "number") {
const _Math = Math;
rounded = Math.round(1000 * timestamp);
} else if (typeof timestamp === "string") {
const _parseInt = parseInt;
rounded = parseInt(timestamp, 10);
}
return rounded;
}
};
let obj11 = applyArgumentsResult(background_str[10]);
str3 = "cache";
if (obj11.isIOS()) {
str3 = "shared";
}
processing_notifications = "processing_notifications";
processing_notification_states = "processing_notification_states";
PUSH_NOTIFICATION_RECEIVED = moveAndReadData("notifications_to_track", "processing_notifications");
constants = 2;
logger = 1;
let obj5 = { value: PUSH_NOTIFICATION_RECEIVED, done: false };
return obj5;
}
} else {
if (1 === tmp4) {
c6 = 0;
closure_12 = tmp75;
logger.error("Error tracking push notifications", closure_12);
} else {
if (2 === tmp4) {
if (arg0 === 1) {
logger = 3;
throw value;
} else if (arg0 === 2) {
c6 = 0;
logger = 3;
let obj6 = { value, done: true };
return obj6;
} else {
PUSH_NOTIFICATION_RECEIVED = value;
if (null == PUSH_NOTIFICATION_RECEIVED) {
c6 = 0;
logger = 3;
return { value: "IconComponent", done: null };
} else {
const _Map = Map;
const self = this;
const self2 = this;
map = new Map();
PUSH_NOTIFICATION_RECEIVED = applyArgumentsResult(background_str[10]);
if (PUSH_NOTIFICATION_RECEIVED.isIOS()) {
PUSH_NOTIFICATION_RECEIVED = moveAndReadData("notification_states_to_track", processing_notification_states);
constants = 3;
logger = 1;
let obj8 = { value: PUSH_NOTIFICATION_RECEIVED, done: false };
return obj8;
}
}
}
} else if (3 === tmp4) {
if (arg0 === 1) {
logger = 3;
throw value;
} else if (arg0 === 2) {
c6 = 0;
logger = 3;
let obj9 = { value, done: true };
return obj9;
} else {
tmp75 = value;
PUSH_NOTIFICATION_RECEIVED = tmp75;
if (null !== tmp75) {
const str14 = tmp75.trim();
const parts = str14.split("\n");
const item = parts.forEach((item) => {
const parsed = JSON.parse(item);
const result = closure_1_4.set(parsed._local_uuid, parsed.app_state);
});
}
}
} else if (4 === tmp4) {
c6 = 1;
PUSH_NOTIFICATION_RECEIVED = applyArgumentsResult;
applyArgumentsResult.return();
throw tmp75;
} else {
if (5 === tmp4) {
if (arg0 === 1) {
logger = 3;
throw value;
} else if (arg0 === 2) {
c6 = 0;
logger = 3;
let obj10 = { value, done: true };
return obj10;
} else {
PUSH_NOTIFICATION_RECEIVED = applyArgumentsResult(background_str[10]);
if (PUSH_NOTIFICATION_RECEIVED.isIOS()) {
let tmp5 = PUSH_NOTIFICATION_RECEIVED;
let obj2 = applyArgumentsResult(background_str[11]);
PUSH_NOTIFICATION_RECEIVED = obj2.removeFile(str3, processing_notification_states);
constants = 6;
logger = 1;
let obj12 = { value: PUSH_NOTIFICATION_RECEIVED, done: false };
return obj12;
}
}
} else if (arg0 === 1) {
logger = 3;
throw value;
} else if (arg0 === 2) {
c6 = 0;
logger = 3;
obj = { value, done: true };
return obj;
}
c6 = 0;
}
const str = PUSH_NOTIFICATION_RECEIVED.trim();
closure_6 = str.split("\n");
let closure_1 = closure_6;
applyArgumentsResult = closure_6[Symbol.iterator]();
PUSH_NOTIFICATION_RECEIVED = applyArgumentsResult.next();
while (applyArgumentsResult !== undefined) {
c6 = 2;
let _JSON = JSON;
logger = JSON.parse(PUSH_NOTIFICATION_RECEIVED);
PUSH_NOTIFICATION_RECEIVED = applyArgumentsResult(background_str[10]);
let isIOSResult = PUSH_NOTIFICATION_RECEIVED.isIOS();
if (isIOSResult) {
isIOSResult = undefined !== logger._local_uuid;
}
if (isIOSResult) {
PUSH_NOTIFICATION_RECEIVED = logger;
let tmp24 = logger;
value = map.get(logger._local_uuid);
background_str = value;
if (value == null) {
background_str = "background";
}
PUSH_NOTIFICATION_RECEIVED.app_state = background_str;
}
let tmp31 = closure_1(background_str[12]);
PUSH_NOTIFICATION_RECEIVED = constants.PUSH_NOTIFICATION_RECEIVED;
let obj13 = { notification_received_timestamp: normalizeTimestampToMs(logger.timestamp), push_action_type: logger.push_action_type, notif_instance_id: logger.notif_instance_id, notif_type_id: logger.notif_type_id, join_id: logger.join_id, notif_user_id: logger.notif_user_id, receiving_user_id: logger.receiving_user_id, message_id: logger.message_id, message_type: logger.message_type, guild_id: logger.guild_id, channel_id: logger.channel_id, channel_type: str1, rel_type: logger.rel_type, mention_type: logger.mention_type, app_state: logger.app_state, os_enabled: logger.os_enabled };
let track = tmp31.track;
let str2 = logger.channel_type;
str1 = undefined;
if (str2 != null) {
str1 = str2.toString();
}
let trackResult = track(PUSH_NOTIFICATION_RECEIVED, obj13);
c6 = 1;
continue;
}
let obj7 = applyArgumentsResult(background_str[11]);
PUSH_NOTIFICATION_RECEIVED = obj7.removeFile(str3, processing_notifications);
constants = 5;
logger = 1;
const obj14 = { value: PUSH_NOTIFICATION_RECEIVED, done: false };
return obj14;
}
logger = 3;
return { value: "IconComponent", done: null };
}
} catch (tmp75) {
if (0 === c6) {
logger = 3;
throw tmp75;
} else if (1 === tmp77) {
constants = 1;
} else {
constants = 4;
}
}
}
});
applyArgumentsResult.handleSetCallNotificationExperiment = function handleSetCallNotificationExperiment() {
obj = PlatformUtils;
if (!obj.isIOS()) {
const DCDNotificationManager = NativeModules.DCDNotificationManager;
const setShowMissedCallNotifications = DCDNotificationManager.setShowMissedCallNotifications;
const tmp = NativeModules;
if (setShowMissedCallNotifications != null) {
const result = setShowMissedCallNotifications(true);
}
const DCDNotificationManager2 = tmp.DCDNotificationManager;
const setShowFullscreenCallUI = DCDNotificationManager2.setShowFullscreenCallUI;
if (setShowFullscreenCallUI != null) {
const result1 = setShowFullscreenCallUI(true);
}
}
};
applyArgumentsResult.updateAndClearStaleNotifications = function updateAndClearStaleNotifications() {
updateAndClearStaleNotifications();
};
applyArgumentsResult.actions = { MESSAGE_ACK: applyArgumentsResult.handleAck, CHANNEL_SELECT: applyArgumentsResult.handleAck, POST_CONNECTION_OPEN: applyArgumentsResult.handlePostConnectionOpen, EXPERIMENT_OVERRIDE_BUCKET: applyArgumentsResult.handleSetCallNotificationExperiment, EXPERIMENTS_FETCH_SUCCESS: applyArgumentsResult.handleSetCallNotificationExperiment, APP_STATE_UPDATE: applyArgumentsResult.updateAndClearStaleNotifications };
return applyArgumentsResult;
}
}
const nativeNotificationsManager = new NativeNotificationsManager();
let result = size.fileFinishedImporting("modules/notifications/native/NativeNotificationsManager.tsx");
export default nativeNotificationsManager;