Triggers updates upon errors

main
Jackson Morgan 3 months ago
parent 197214539c
commit b6f4aaa775
  1. 1
      packages/connected-solid/src/resources/SolidContainer.ts
  2. 15
      packages/connected-solid/src/resources/SolidLeaf.ts
  3. 30
      packages/connected-solid/src/resources/SolidResource.ts

@ -157,7 +157,6 @@ export class SolidContainer extends SolidResource {
*/ */
async read(): Promise<ReadContainerResult> { async read(): Promise<ReadContainerResult> {
const result = (await this.handleRead()) as ReadContainerResult; const result = (await this.handleRead()) as ReadContainerResult;
if (result.isError) return result;
return { ...result, resource: this }; return { ...result, resource: this };
} }

@ -459,7 +459,10 @@ export class SolidLeaf extends SolidResource {
): Promise<LeafCreateAndOverwriteResult> { ): Promise<LeafCreateAndOverwriteResult> {
const result = await this.requester.upload(blob, mimeType, true); const result = await this.requester.upload(blob, mimeType, true);
this.status = result; this.status = result;
if (result.isError) return result; if (result.isError) {
this.emit("update");
return result;
}
super.updateWithCreateSuccess(result); super.updateWithCreateSuccess(result);
this.binaryData = { blob, mimeType }; this.binaryData = { blob, mimeType };
this.emitThisAndParent(); this.emitThisAndParent();
@ -491,7 +494,10 @@ export class SolidLeaf extends SolidResource {
): Promise<LeafCreateIfAbsentResult> { ): Promise<LeafCreateIfAbsentResult> {
const result = await this.requester.upload(blob, mimeType); const result = await this.requester.upload(blob, mimeType);
this.status = result; this.status = result;
if (result.isError) return result; if (result.isError) {
this.emit("update");
return result;
}
super.updateWithCreateSuccess(result); super.updateWithCreateSuccess(result);
this.binaryData = { blob, mimeType }; this.binaryData = { blob, mimeType };
this.emitThisAndParent(); this.emitThisAndParent();
@ -540,7 +546,10 @@ export class SolidLeaf extends SolidResource {
): Promise<UpdateResult<SolidLeaf>> { ): Promise<UpdateResult<SolidLeaf>> {
const result = await this.requester.updateDataResource(changes); const result = await this.requester.updateDataResource(changes);
this.status = result; this.status = result;
if (result.isError) return result; if (result.isError) {
this.emit("update");
return result;
}
this.binaryData = undefined; this.binaryData = undefined;
this.absent = false; this.absent = false;
this.emitThisAndParent(); this.emitThisAndParent();

@ -39,7 +39,10 @@ import type { NoRootContainerError } from "../requester/results/error/NoRootCont
import type { SolidLeaf } from "./SolidLeaf.js"; import type { SolidLeaf } from "./SolidLeaf.js";
import type { GetWacUriError } from "../wac/getWacUri.js"; import type { GetWacUriError } from "../wac/getWacUri.js";
import { getWacUri, type GetWacUriResult } from "../wac/getWacUri.js"; import { getWacUri, type GetWacUriResult } from "../wac/getWacUri.js";
import { getWacRuleWithAclUri, type GetWacRuleResult } from "../wac/getWacRule.js"; import {
getWacRuleWithAclUri,
type GetWacRuleResult,
} from "../wac/getWacRule.js";
import type { SetWacRuleResult } from "../wac/setWacRule.js"; import type { SetWacRuleResult } from "../wac/setWacRule.js";
import { setWacRuleForAclUri } from "../wac/setWacRule.js"; import { setWacRuleForAclUri } from "../wac/setWacRule.js";
import { NoncompliantPodError } from "../requester/results/error/NoncompliantPodError.js"; import { NoncompliantPodError } from "../requester/results/error/NoncompliantPodError.js";
@ -397,7 +400,10 @@ export abstract class SolidResource
protected async handleRead(): Promise<ReadContainerResult | ReadLeafResult> { protected async handleRead(): Promise<ReadContainerResult | ReadLeafResult> {
const result = await this.requester.read(); const result = await this.requester.read();
this.status = result; this.status = result;
if (result.isError) return result; if (result.isError) {
this.emit("update");
return result;
}
this.updateWithReadSuccess(result); this.updateWithReadSuccess(result);
this.emitThisAndParent(); this.emitThisAndParent();
return result; return result;
@ -454,7 +460,10 @@ export abstract class SolidResource
> { > {
const result = await this.requester.delete(); const result = await this.requester.delete();
this.status = result; this.status = result;
if (result.isError) return result; if (result.isError) {
this.emit("update");
return result;
}
this.updateWithDeleteSuccess(result); this.updateWithDeleteSuccess(result);
this.emitThisAndParent(); this.emitThisAndParent();
return result; return result;
@ -505,7 +514,10 @@ export abstract class SolidResource
> { > {
const result = await this.requester.createDataResource(true); const result = await this.requester.createDataResource(true);
this.status = result; this.status = result;
if (result.isError) return result; if (result.isError) {
this.emit("update");
return result;
}
this.updateWithCreateSuccess(result); this.updateWithCreateSuccess(result);
this.emitThisAndParent(); this.emitThisAndParent();
return result; return result;
@ -538,7 +550,10 @@ export abstract class SolidResource
> { > {
const result = await this.requester.createDataResource(); const result = await this.requester.createDataResource();
this.status = result; this.status = result;
if (result.isError) return result; if (result.isError) {
this.emit("update");
return result;
}
this.updateWithCreateSuccess(result); this.updateWithCreateSuccess(result);
this.emitThisAndParent(); this.emitThisAndParent();
return result; return result;
@ -739,7 +754,10 @@ export abstract class SolidResource
fetch: this.context.solid.fetch, fetch: this.context.solid.fetch,
}, },
); );
if (result.isError) return result; if (result.isError) {
this.emit("update");
return result;
}
this.wacRule = result.wacRule; this.wacRule = result.wacRule;
return result; return result;
} }

Loading…
Cancel
Save