a tool for shared writing and social publishing

check permissions on retractions

+14
+14
src/replicache/cachedServerMutationContext.ts
··· 155 155 }); 156 156 }, 157 157 async retractFact(factID) { 158 + let cachedFact = writeCache.find( 159 + (f) => f.type === "put" && f.fact.id === factID, 160 + ); 161 + let entity: string | undefined; 162 + if (cachedFact && cachedFact.type === "put") { 163 + entity = cachedFact.fact.entity; 164 + } else { 165 + let [row] = await tx 166 + .select({ entity: facts.entity }) 167 + .from(facts) 168 + .where(driz.eq(facts.id, factID)); 169 + entity = row?.entity; 170 + } 171 + if (!entity || !(await this.checkPermission(entity))) return; 158 172 writeCache = writeCache.filter((f) => f.fact.id !== factID); 159 173 writeCache.push({ type: "del", fact: { id: factID } }); 160 174 },