Update extension list after removing an obsolete extension (#579)

The removed extension was never removed from the cached list
This commit is contained in:
schroda
2024-01-29 20:56:09 +01:00
committed by GitHub
parent cee566d9b2
commit 506e0aa0e3
2 changed files with 19 additions and 15 deletions

View File

@@ -110,13 +110,13 @@ export function ExtensionCard(props: IProps) {
setInstalledState(state); setInstalledState(state);
switch (action) { switch (action) {
case ExtensionAction.INSTALL: case ExtensionAction.INSTALL:
await requestManager.updateExtension(pkgName, { install: true }).response; await requestManager.updateExtension(pkgName, { install: true, isObsolete }).response;
break; break;
case ExtensionAction.UNINSTALL: case ExtensionAction.UNINSTALL:
await requestManager.updateExtension(pkgName, { uninstall: true }).response; await requestManager.updateExtension(pkgName, { uninstall: true, isObsolete }).response;
break; break;
case ExtensionAction.UPDATE: case ExtensionAction.UPDATE:
await requestManager.updateExtension(pkgName, { update: true }).response; await requestManager.updateExtension(pkgName, { update: true, isObsolete }).response;
break; break;
default: default:
throw new Error(`Unexpected ExtensionAction "${action}"`); throw new Error(`Unexpected ExtensionAction "${action}"`);

View File

@@ -1015,7 +1015,7 @@ export class RequestManager {
public updateExtension( public updateExtension(
id: string, id: string,
patch: UpdateExtensionPatchInput, { isObsolete = false, ...patch }: UpdateExtensionPatchInput & { isObsolete?: boolean },
options?: MutationOptions<UpdateExtensionMutation, UpdateExtensionMutationVariables>, options?: MutationOptions<UpdateExtensionMutation, UpdateExtensionMutationVariables>,
): AbortableApolloMutationResponse<UpdateExtensionMutation> { ): AbortableApolloMutationResponse<UpdateExtensionMutation> {
const result = this.doRequest<UpdateExtensionMutation, UpdateExtensionMutationVariables>( const result = this.doRequest<UpdateExtensionMutation, UpdateExtensionMutationVariables>(
@@ -1042,18 +1042,22 @@ export class RequestManager {
...cachedExtensions.data, ...cachedExtensions.data,
fetchExtensions: { fetchExtensions: {
...cachedExtensions.data.fetchExtensions, ...cachedExtensions.data.fetchExtensions,
extensions: cachedExtensions.data.fetchExtensions.extensions.map((extension) => { extensions: cachedExtensions.data.fetchExtensions.extensions
const isUpdatedExtension = .filter((extension) => {
extension.apkName === response.data?.updateExtension.extension?.apkName; const isUpdatedExtension = id === extension.pkgName;
if (!isUpdatedExtension) { return isUpdatedExtension && !isObsolete;
return extension; })
} .map((extension) => {
const isUpdatedExtension = id === extension.pkgName;
if (!isUpdatedExtension) {
return extension;
}
return { return {
...extension, ...extension,
...response.data?.updateExtension.extension, ...response.data?.updateExtension.extension,
}; };
}), }),
}, },
}, },
}; };