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:
parent
c65f757bc4
commit
bbd3633038
1 changed files with 32 additions and 7 deletions
|
@ -28,7 +28,7 @@ interface MatchAndReplace {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Used to re-render the Registered Games tab to update how our button looks like */
|
/** 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[] = [];
|
let ignoredActivitiesCache: string[] = [];
|
||||||
|
|
||||||
|
@ -134,19 +134,44 @@ export default definePlugin({
|
||||||
|
|
||||||
async start() {
|
async start() {
|
||||||
ignoredActivitiesCache = (await DataStore.get<string[]>("IgnoreActivities_ignoredActivities")) ?? [];
|
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>) {
|
isActivityEnabled(props: Record<string, any>) {
|
||||||
if ("application_id" in props) return !ignoredActivitiesCache.includes(props.application_id);
|
/** LocalActivityStore games have a "type" prop */
|
||||||
else if ("id" in props) return !ignoredActivitiesCache.includes(props.id);
|
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;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
async handleActivityToggle(props: Record<string, any>) {
|
async handleActivityToggle(props: Record<string, any>) {
|
||||||
if (ignoredActivitiesCache.includes(props.id)) ignoredActivitiesCache.splice(ignoredActivitiesCache.indexOf(props.id, 1));
|
const id = props.id ?? props.exePath;
|
||||||
else ignoredActivitiesCache.push(props.id);
|
if (id === undefined) return;
|
||||||
RunningGameStore.IgnoreActivities_reRenderGames();
|
|
||||||
|
if (ignoredActivitiesCache.includes(id)) ignoredActivitiesCache.splice(ignoredActivitiesCache.indexOf(id, 1));
|
||||||
|
else ignoredActivitiesCache.push(id);
|
||||||
|
RunningGameStoreModule.IgnoreActivities_reRenderGames();
|
||||||
await DataStore.set("IgnoreActivities_ignoredActivities", ignoredActivitiesCache);
|
await DataStore.set("IgnoreActivities_ignoredActivities", ignoredActivitiesCache);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue