411 lines
13 KiB
TypeScript
411 lines
13 KiB
TypeScript
// Module ID: 8192
|
|
// Function ID: 8193
|
|
// Name: maybeMarkSeen
|
|
// Dependencies: [5, 38, 709, 2]
|
|
|
|
// Module 8192 (maybeMarkSeen)
|
|
import asyncGeneratorStep from "asyncGeneratorStep";
|
|
|
|
let obj = { IMMEDIATE: 0, [0]: "IMMEDIATE", IMMEDIATE_WITH_COOLDOWN: 1, [1]: "IMMEDIATE_WITH_COOLDOWN", IMMEDIATE_WITH_DELAY: 2, [2]: "IMMEDIATE_WITH_DELAY" };
|
|
class TrackedFeedItem {
|
|
constructor() {
|
|
obj = Object.create(new.target.prototype);
|
|
obj.seenIntervals = [];
|
|
return obj;
|
|
}
|
|
}
|
|
const prototype = TrackedFeedItem.prototype;
|
|
prototype["maybeMarkSeen"] = function maybeMarkSeen(arg0) {
|
|
let flag = null == tmp;
|
|
if (!flag) {
|
|
flag = null != tmp.endTimeMillis;
|
|
}
|
|
if (flag) {
|
|
const seenIntervals = this.seenIntervals;
|
|
const obj = { startTimeMillis: null };
|
|
obj[0] = arg0;
|
|
seenIntervals.push(obj);
|
|
flag = true;
|
|
}
|
|
return flag;
|
|
};
|
|
prototype["maybeMarkUnseen"] = function maybeMarkUnseen(endTimeMillis) {
|
|
let flag = null != tmp && null == tmp.endTimeMillis;
|
|
if (flag) {
|
|
tmp.endTimeMillis = endTimeMillis;
|
|
flag = true;
|
|
}
|
|
return flag;
|
|
};
|
|
prototype["isVisible"] = function isVisible() {
|
|
let startTimeMillis;
|
|
if (this.seenIntervals[this.seenIntervals.length - 1] != null) {
|
|
startTimeMillis = tmp.startTimeMillis;
|
|
}
|
|
let tmp3 = null != startTimeMillis;
|
|
if (tmp3) {
|
|
let endTimeMillis;
|
|
if (tmp != null) {
|
|
endTimeMillis = tmp.endTimeMillis;
|
|
}
|
|
tmp3 = null == endTimeMillis;
|
|
}
|
|
return tmp3;
|
|
};
|
|
prototype["computeSeenTimeDestructive"] = function computeSeenTimeDestructive(isForcedFlush) {
|
|
let num = 0;
|
|
const items = [];
|
|
const iter = this.seenIntervals[Symbol.iterator]();
|
|
const nextResult = iter.next();
|
|
while (iter !== undefined) {
|
|
let tmp2 = nextResult;
|
|
if (null == nextResult.endTimeMillis) {
|
|
if (isForcedFlush) {
|
|
let _Date = Date;
|
|
let timestamp = Date.now();
|
|
let tmp8 = num;
|
|
let tmp9 = nextResult;
|
|
num = num + (timestamp - tmp2.startTimeMillis);
|
|
let obj = { startTimeMillis: null };
|
|
obj[0] = timestamp;
|
|
let arr = items.push(obj);
|
|
} else {
|
|
let tmp5 = nextResult;
|
|
arr = items.push(tmp2);
|
|
}
|
|
} else {
|
|
let tmp3 = num;
|
|
let tmp4 = nextResult;
|
|
num = num + (tmp2.endTimeMillis - tmp2.startTimeMillis);
|
|
}
|
|
continue;
|
|
}
|
|
importDefault(38)(items.length < 2, "there should only be a single left over data");
|
|
this.seenIntervals = items;
|
|
return Math.round(num);
|
|
};
|
|
let result = require("dispatcher").fileFinishedImporting("utils/AnalyticsFeedItemSeenManager.tsx");
|
|
class AnalyticsFeedItemSeenManager {
|
|
constructor(arg0) {
|
|
flag = global.isPaused;
|
|
({ id, windowId } = global);
|
|
obj = Object.create(new.target.prototype);
|
|
closure_0 = obj;
|
|
obj.initialize = function initialize() {
|
|
obj = obj(outer1_1[2]);
|
|
const subscription = obj.subscribe("ANALYTICS_FEED_ITEM_SEEN", obj.handleFeedItemSeen);
|
|
const subscription1 = obj(outer1_1[2]).subscribe("ANALYTICS_FEED_ITEM_UNSEEN", obj.handleFeedItemUnseen);
|
|
const obj2 = obj(outer1_1[2]);
|
|
const subscription2 = obj(outer1_1[2]).subscribe("ANALYTICS_FEED_FLUSH", obj.handleFeedItemFlush);
|
|
const obj3 = obj(outer1_1[2]);
|
|
const subscription3 = obj(outer1_1[2]).subscribe("APP_STATE_UPDATE", obj.handleAppStateUpdate);
|
|
const obj4 = obj(outer1_1[2]);
|
|
const subscription4 = obj(outer1_1[2]).subscribe("WINDOW_FOCUS", obj.handleWindowFocus);
|
|
const onInitialize = obj.onInitialize;
|
|
if (onInitialize != null) {
|
|
onInitialize();
|
|
}
|
|
};
|
|
obj.terminate = function terminate() {
|
|
obj = obj(outer1_1[2]);
|
|
obj.unsubscribe("ANALYTICS_FEED_ITEM_SEEN", obj.handleFeedItemSeen);
|
|
obj(outer1_1[2]).unsubscribe("ANALYTICS_FEED_ITEM_UNSEEN", obj.handleFeedItemUnseen);
|
|
const obj2 = obj;
|
|
const obj3 = obj(outer1_1[2]);
|
|
obj(outer1_1[2]).unsubscribe("ANALYTICS_FEED_FLUSH", obj.handleFeedItemFlush);
|
|
const obj4 = obj(outer1_1[2]);
|
|
obj(outer1_1[2]).unsubscribe("APP_STATE_UPDATE", obj.handleAppStateUpdate);
|
|
const obj5 = obj(outer1_1[2]);
|
|
obj(outer1_1[2]).unsubscribe("WINDOW_FOCUS", obj.handleWindowFocus);
|
|
const onTerminate = obj.onTerminate;
|
|
if (onTerminate != null) {
|
|
onTerminate();
|
|
}
|
|
obj2.maybeFlushSeenItems(outer1_3.IMMEDIATE);
|
|
};
|
|
obj.handleFeedItemFlush = function handleFeedItemFlush(id) {
|
|
if (obj._id === id.id) {
|
|
obj.maybeFlushSeenItems(tmp);
|
|
}
|
|
};
|
|
obj.handleFeedItemSeen = function handleFeedItemSeen(feedItemId) {
|
|
feedItemId = feedItemId.feedItemId;
|
|
if (feedItemId.id === obj._id) {
|
|
if (obj._paused) {
|
|
const _pausedFeedItemIds = obj._pausedFeedItemIds;
|
|
_pausedFeedItemIds.add(feedItemId);
|
|
} else {
|
|
const trackedFeedItem = obj.getTrackedFeedItem(feedItemId);
|
|
const onFeedItemSeen = obj.onFeedItemSeen;
|
|
if (onFeedItemSeen != null) {
|
|
onFeedItemSeen(feedItemId, trackedFeedItem.maybeMarkSeen(tmp));
|
|
}
|
|
}
|
|
}
|
|
};
|
|
obj.handleFeedItemUnseen = function handleFeedItemUnseen(feedItemId) {
|
|
feedItemId = feedItemId.feedItemId;
|
|
if (feedItemId.id === obj._id) {
|
|
if (obj._paused) {
|
|
const _pausedFeedItemIds = obj._pausedFeedItemIds;
|
|
_pausedFeedItemIds.delete(feedItemId);
|
|
}
|
|
const trackedFeedItem = obj.getTrackedFeedItem(feedItemId);
|
|
const onFeedItemUnseen = obj.onFeedItemUnseen;
|
|
if (onFeedItemUnseen != null) {
|
|
onFeedItemUnseen(feedItemId, trackedFeedItem.maybeMarkUnseen(tmp));
|
|
}
|
|
obj.maybeFlushSeenItems();
|
|
}
|
|
};
|
|
obj.getTrackedFeedItem = function getTrackedFeedItem(feedItemId) {
|
|
if (null == obj.trackedFeedItems[feedItemId]) {
|
|
if (typeof outer1_4 !== "function") {
|
|
HermesBuiltin.throwTypeError();
|
|
}
|
|
obj = Object.create(outer1_4.prototype);
|
|
obj.seenIntervals = [];
|
|
tmp.trackedFeedItems[feedItemId] = obj;
|
|
const tmp2 = outer1_4;
|
|
}
|
|
return obj.trackedFeedItems[feedItemId];
|
|
};
|
|
obj.getVisibleFeedItemIds = function getVisibleFeedItemIds() {
|
|
const keys = Object.keys(obj.trackedFeedItems);
|
|
return new Set(keys.filter((arg0) => {
|
|
let isVisibleResult;
|
|
if (trackedFeedItems.trackedFeedItems[arg0] != null) {
|
|
isVisibleResult = obj.isVisible();
|
|
}
|
|
return isVisibleResult;
|
|
}));
|
|
};
|
|
obj.handleAppStateUpdate = function handleAppStateUpdate(state) {
|
|
state = state.state;
|
|
let _isReactNavigationFocused = "active" === state;
|
|
if (_isReactNavigationFocused) {
|
|
_isReactNavigationFocused = obj._isReactNavigationFocused;
|
|
}
|
|
if (_isReactNavigationFocused) {
|
|
obj.resume();
|
|
}
|
|
if ("background" === state) {
|
|
if (obj._isReactNavigationFocused) {
|
|
obj.pause();
|
|
}
|
|
obj.maybeFlushSeenItems(outer1_3.IMMEDIATE);
|
|
}
|
|
};
|
|
obj.clearPausedFeedItemIds = function clearPausedFeedItemIds() {
|
|
obj._pausedFeedItemIds = new Set();
|
|
obj._paused = false;
|
|
};
|
|
obj.pause = function pause() {
|
|
if (!obj._paused) {
|
|
const visibleFeedItemIds = obj.getVisibleFeedItemIds();
|
|
const item = visibleFeedItemIds.forEach((feedItemId) => {
|
|
closure_0.handleFeedItemUnseen({ id: closure_0._id, feedItemId, timestampMillis: Date.now(), type: "ANALYTICS_FEED_ITEM_UNSEEN" });
|
|
});
|
|
obj._paused = true;
|
|
obj._pausedFeedItemIds = visibleFeedItemIds;
|
|
}
|
|
};
|
|
obj.resume = function resume() {
|
|
if (obj._paused) {
|
|
obj._paused = false;
|
|
const _pausedFeedItemIds = obj._pausedFeedItemIds;
|
|
const item = _pausedFeedItemIds.forEach((feedItemId) => {
|
|
closure_0.handleFeedItemSeen({ id: closure_0._id, feedItemId, timestampMillis: Date.now(), type: "ANALYTICS_FEED_ITEM_SEEN" });
|
|
});
|
|
const result = obj.clearPausedFeedItemIds();
|
|
}
|
|
};
|
|
obj.handleReactNavigationFocus = function handleReactNavigationFocus(_isReactNavigationFocused) {
|
|
obj._isReactNavigationFocused = _isReactNavigationFocused;
|
|
if (obj._isReactNavigationFocused) {
|
|
obj.resume();
|
|
} else {
|
|
obj.pause();
|
|
}
|
|
};
|
|
obj.handleWindowFocus = function handleWindowFocus(windowId) {
|
|
if (obj._windowId === windowId.windowId) {
|
|
if (windowId.focused) {
|
|
obj.resume();
|
|
} else {
|
|
obj.pause();
|
|
}
|
|
}
|
|
};
|
|
obj.trackedFeedItems = {};
|
|
obj._id = id;
|
|
obj._windowId = windowId;
|
|
set = new Set();
|
|
obj._pausedFeedItemIds = set;
|
|
if (flag == null) {
|
|
flag = false;
|
|
}
|
|
obj._paused = flag;
|
|
obj._isReactNavigationFocused = true;
|
|
obj._lastFlushTimeMillis = Date.now();
|
|
return obj;
|
|
}
|
|
}
|
|
AnalyticsFeedItemSeenManager.prototype["maybeFlushSeenItems"] = function maybeFlushSeenItems(IMMEDIATE) {
|
|
let self = this;
|
|
if (null == IMMEDIATE) {
|
|
const _Date = Date;
|
|
if (Date.now() - self._lastFlushTimeMillis < 60000) {
|
|
return Promise.resolve();
|
|
}
|
|
}
|
|
if (IMMEDIATE === obj.IMMEDIATE_WITH_COOLDOWN) {
|
|
const _Date2 = Date;
|
|
if (Date.now() - self._lastFlushTimeMillis < 3000) {
|
|
return Promise.resolve();
|
|
}
|
|
}
|
|
const flushSeenItemsFunction = self.createFlushSeenItemsFunction(IMMEDIATE);
|
|
let closure_0 = flushSeenItemsFunction;
|
|
if (null == flushSeenItemsFunction) {
|
|
let resolved = Promise.resolve();
|
|
} else {
|
|
const _Date3 = Date;
|
|
self._lastFlushTimeMillis = Date.now();
|
|
if (IMMEDIATE !== tmp2.IMMEDIATE) {
|
|
if (IMMEDIATE !== tmp2.IMMEDIATE_WITH_COOLDOWN) {
|
|
resolved = new Promise((arg0) => {
|
|
let closure_0 = arg0;
|
|
const timerId = setTimeout(outer1_2(function*() {
|
|
if (c2 === 2) {
|
|
c2 = 3;
|
|
HermesBuiltin.throwTypeError();
|
|
} else if (tmp3 === 3) {
|
|
if (arg0 === 1) {
|
|
throw arg1;
|
|
} else if (arg0 === 2) {
|
|
let obj = { value: null, done: true };
|
|
obj[0] = arg1;
|
|
return obj;
|
|
} else {
|
|
return { value: "T", done: null };
|
|
}
|
|
} else {
|
|
try {
|
|
c2 = 2;
|
|
if (0 === c1) {
|
|
if (arg0 === 1) {
|
|
c2 = 3;
|
|
throw arg1;
|
|
} else if (arg0 === 2) {
|
|
c2 = 3;
|
|
obj = { value: null, done: true };
|
|
obj[0] = arg1;
|
|
return obj;
|
|
} else {
|
|
const callback = tmp4;
|
|
c1 = 1;
|
|
c2 = 1;
|
|
const obj1 = { value: null, done: false };
|
|
obj1[0] = outer1_0();
|
|
return obj1;
|
|
}
|
|
} else if (arg0 === 1) {
|
|
c2 = 3;
|
|
throw arg1;
|
|
} else if (arg0 === 2) {
|
|
c2 = 3;
|
|
obj = { value: null, done: true };
|
|
obj[0] = arg1;
|
|
return obj;
|
|
} else {
|
|
callback();
|
|
c2 = 3;
|
|
return { value: "T", done: null };
|
|
}
|
|
} catch (tmp9) {
|
|
c2 = tmp;
|
|
throw tmp9;
|
|
}
|
|
}
|
|
}), 100);
|
|
});
|
|
}
|
|
}
|
|
closure_0 = undefined;
|
|
closure_0 = callback((arg0) => {
|
|
let closure_0 = arg0;
|
|
let c2 = 0;
|
|
let c3 = 0;
|
|
return (function*(arg0) {
|
|
if (c3 === 2) {
|
|
c3 = 3;
|
|
HermesBuiltin.throwTypeError();
|
|
} else if (tmp4 === 3) {
|
|
if (arg0 === 1) {
|
|
throw arg1;
|
|
} else if (arg0 === 2) {
|
|
let obj = { value: null, done: true };
|
|
obj[0] = arg1;
|
|
return obj;
|
|
} else {
|
|
return { value: "T", done: null };
|
|
}
|
|
} else {
|
|
try {
|
|
c3 = 2;
|
|
if (0 === c2) {
|
|
if (arg0 === 1) {
|
|
c3 = 3;
|
|
throw arg1;
|
|
} else if (arg0 === 2) {
|
|
c3 = 3;
|
|
obj = { value: null, done: true };
|
|
obj[0] = arg1;
|
|
return obj;
|
|
} else {
|
|
let closure_1 = tmp2;
|
|
c2 = 1;
|
|
c3 = 1;
|
|
const obj1 = { value: null, done: false };
|
|
obj1[0] = callback();
|
|
return obj1;
|
|
}
|
|
} else if (arg0 === 1) {
|
|
c3 = 3;
|
|
throw arg1;
|
|
} else if (arg0 === 2) {
|
|
c3 = 3;
|
|
obj = { value: null, done: true };
|
|
obj[0] = arg1;
|
|
return obj;
|
|
} else {
|
|
callback();
|
|
c3 = 3;
|
|
return { value: "T", done: null };
|
|
}
|
|
} catch (tmp11) {
|
|
c3 = tmp;
|
|
throw tmp11;
|
|
}
|
|
}
|
|
})();
|
|
});
|
|
resolved = new Promise(function() {
|
|
const self = this;
|
|
const apply = closure_0.apply;
|
|
if (typeof apply === "unknown") {
|
|
let applyArgumentsResult = HermesBuiltin.applyArguments(self);
|
|
} else {
|
|
applyArgumentsResult = apply(self, arguments);
|
|
}
|
|
return applyArgumentsResult;
|
|
});
|
|
}
|
|
return resolved;
|
|
};
|
|
|
|
export const AnalyticsFeedTypes = { FORUM_CHANNEL: "forum_channel" };
|
|
export const ForceFlushType = obj;
|
|
export { TrackedFeedItem };
|
|
export { AnalyticsFeedItemSeenManager };
|