From b6f4aaa7753f428b113db79364d3940b2988cde4 Mon Sep 17 00:00:00 2001 From: Jackson Morgan Date: Wed, 4 Jun 2025 17:54:33 -0400 Subject: [PATCH] Triggers updates upon errors --- .../src/resources/SolidContainer.ts | 1 - .../src/resources/SolidLeaf.ts | 15 ++++++++-- .../src/resources/SolidResource.ts | 30 +++++++++++++++---- 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/packages/connected-solid/src/resources/SolidContainer.ts b/packages/connected-solid/src/resources/SolidContainer.ts index a7aec7e..5999aea 100644 --- a/packages/connected-solid/src/resources/SolidContainer.ts +++ b/packages/connected-solid/src/resources/SolidContainer.ts @@ -157,7 +157,6 @@ export class SolidContainer extends SolidResource { */ async read(): Promise { const result = (await this.handleRead()) as ReadContainerResult; - if (result.isError) return result; return { ...result, resource: this }; } diff --git a/packages/connected-solid/src/resources/SolidLeaf.ts b/packages/connected-solid/src/resources/SolidLeaf.ts index 5559c35..433e424 100644 --- a/packages/connected-solid/src/resources/SolidLeaf.ts +++ b/packages/connected-solid/src/resources/SolidLeaf.ts @@ -459,7 +459,10 @@ export class SolidLeaf extends SolidResource { ): Promise { const result = await this.requester.upload(blob, mimeType, true); this.status = result; - if (result.isError) return result; + if (result.isError) { + this.emit("update"); + return result; + } super.updateWithCreateSuccess(result); this.binaryData = { blob, mimeType }; this.emitThisAndParent(); @@ -491,7 +494,10 @@ export class SolidLeaf extends SolidResource { ): Promise { const result = await this.requester.upload(blob, mimeType); this.status = result; - if (result.isError) return result; + if (result.isError) { + this.emit("update"); + return result; + } super.updateWithCreateSuccess(result); this.binaryData = { blob, mimeType }; this.emitThisAndParent(); @@ -540,7 +546,10 @@ export class SolidLeaf extends SolidResource { ): Promise> { const result = await this.requester.updateDataResource(changes); this.status = result; - if (result.isError) return result; + if (result.isError) { + this.emit("update"); + return result; + } this.binaryData = undefined; this.absent = false; this.emitThisAndParent(); diff --git a/packages/connected-solid/src/resources/SolidResource.ts b/packages/connected-solid/src/resources/SolidResource.ts index cbc2648..4ec3d97 100644 --- a/packages/connected-solid/src/resources/SolidResource.ts +++ b/packages/connected-solid/src/resources/SolidResource.ts @@ -39,7 +39,10 @@ import type { NoRootContainerError } from "../requester/results/error/NoRootCont import type { SolidLeaf } from "./SolidLeaf.js"; import type { GetWacUriError } 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 { setWacRuleForAclUri } from "../wac/setWacRule.js"; import { NoncompliantPodError } from "../requester/results/error/NoncompliantPodError.js"; @@ -397,7 +400,10 @@ export abstract class SolidResource protected async handleRead(): Promise { const result = await this.requester.read(); this.status = result; - if (result.isError) return result; + if (result.isError) { + this.emit("update"); + return result; + } this.updateWithReadSuccess(result); this.emitThisAndParent(); return result; @@ -454,7 +460,10 @@ export abstract class SolidResource > { const result = await this.requester.delete(); this.status = result; - if (result.isError) return result; + if (result.isError) { + this.emit("update"); + return result; + } this.updateWithDeleteSuccess(result); this.emitThisAndParent(); return result; @@ -505,7 +514,10 @@ export abstract class SolidResource > { const result = await this.requester.createDataResource(true); this.status = result; - if (result.isError) return result; + if (result.isError) { + this.emit("update"); + return result; + } this.updateWithCreateSuccess(result); this.emitThisAndParent(); return result; @@ -538,7 +550,10 @@ export abstract class SolidResource > { const result = await this.requester.createDataResource(); this.status = result; - if (result.isError) return result; + if (result.isError) { + this.emit("update"); + return result; + } this.updateWithCreateSuccess(result); this.emitThisAndParent(); return result; @@ -739,7 +754,10 @@ export abstract class SolidResource fetch: this.context.solid.fetch, }, ); - if (result.isError) return result; + if (result.isError) { + this.emit("update"); + return result; + } this.wacRule = result.wacRule; return result; }