fix(Ignore Activities): Fixes games manually added not being able to be ignored (#162)

Co-authored-by: Ven <vendicated@riseup.net>
This commit is contained in:
Nuckyz 2022-10-26 10:31:55 -03:00 committed by GitHub
parent c65f757bc4
commit bbd3633038
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 32 additions and 7 deletions

View File

@ -28,7 +28,7 @@ interface MatchAndReplace {
}
/** Used to re-render the Registered Games tab to update how our button looks like */
const RunningGameStore = lazyWebpack(filters.byProps(["IgnoreActivities_reRenderGames"]));
const RunningGameStoreModule = lazyWebpack(filters.byProps(["IgnoreActivities_reRenderGames"]));
let ignoredActivitiesCache: string[] = [];
@ -134,19 +134,44 @@ export default definePlugin({
async start() {
ignoredActivitiesCache = (await DataStore.get<string[]>("IgnoreActivities_ignoredActivities")) ?? [];
if (ignoredActivitiesCache.length !== 0) {
const gamesSeen: Record<string, any>[] = RunningGameStoreModule.Z.getGamesSeen();
for (const [index, ignoredActivity] of ignoredActivitiesCache.entries()) {
if (!gamesSeen.some(game => (game.id !== undefined && game.id === ignoredActivity) || game.exePath === ignoredActivity)) {
ignoredActivitiesCache.splice(index, 1);
}
}
await DataStore.set("IgnoreActivities_ignoredActivities", ignoredActivitiesCache);
}
},
/** This method is used in different places. The Registered Games tab game props only have an id and the LocalActivityStore have the application_id */
isActivityEnabled(props: Record<string, any>) {
if ("application_id" in props) return !ignoredActivitiesCache.includes(props.application_id);
else if ("id" in props) return !ignoredActivitiesCache.includes(props.id);
/** LocalActivityStore games have a "type" prop */
if ("type" in props) {
if (props.application_id !== undefined) return !ignoredActivitiesCache.includes(props.application_id);
else {
const exePath = RunningGameStoreModule.Z.getRunningGames().find(game => game.name === props.name)?.exePath;
if (exePath) return !ignoredActivitiesCache.includes(exePath);
}
}
/** Registered Games tab games have an "id" prop */
else if ("id" in props) {
if (props.id !== undefined) return !ignoredActivitiesCache.includes(props.id);
else return !ignoredActivitiesCache.includes(props.exePath);
}
return true;
},
async handleActivityToggle(props: Record<string, any>) {
if (ignoredActivitiesCache.includes(props.id)) ignoredActivitiesCache.splice(ignoredActivitiesCache.indexOf(props.id, 1));
else ignoredActivitiesCache.push(props.id);
RunningGameStore.IgnoreActivities_reRenderGames();
const id = props.id ?? props.exePath;
if (id === undefined) return;
if (ignoredActivitiesCache.includes(id)) ignoredActivitiesCache.splice(ignoredActivitiesCache.indexOf(id, 1));
else ignoredActivitiesCache.push(id);
RunningGameStoreModule.IgnoreActivities_reRenderGames();
await DataStore.set("IgnoreActivities_ignoredActivities", ignoredActivitiesCache);
}
});