view who was fronting when a record was made

feat: store names in the record when fetched from sp etc.

ptr.pet de5e0962 f60168fc

verified
Changed files
+21 -16
src
entrypoints
lib
+5 -1
src/entrypoints/background.ts
···
const results = [];
for (const result of items) {
const resp = await putFronter(
-
{ name: fronter ?? "", subject: result.uri, member: spFronters },
+
{
+
names: fronter?.split(",").map((name) => name.trim()) ?? [],
+
subject: result.uri,
+
members: spFronters,
+
},
authToken,
);
if (resp.ok) {
+16 -15
src/lib/utils.ts
···
v.string(),
v.object({
$type: v.literal("systems.gaze.atfronter.fronter"),
-
name: v.string(),
subject: v.resourceUriString(),
-
member: v.array(v.genericUriString()), // identifier(s) for pk or sp or etc. (maybe member record in the future?)
+
names: v.array(v.string()),
+
members: v.array(v.genericUriString()), // identifier(s) for pk or sp or etc. (maybe member record in the future?)
}),
);
···
};
export const getFronterNames = async (
-
name: string,
+
name: string[],
memberUris: MemberUri[],
) => {
-
let fronterNames = [name];
+
let fronterNames = name;
if (memberUris.length > 0) {
fronterNames = (
await Promise.allSettled(memberUris.map((m) => fetchMember(m)))
···
let memberUris, fronterNames;
try {
-
memberUris = maybeTyped.value.member.map((m) => parseMemberId(m));
-
fronterNames = await getFronterNames(maybeTyped.value.name, memberUris);
+
memberUris = maybeTyped.value.members.map((m) => parseMemberId(m));
+
// fronterNames = await getFronterNames(maybeTyped.value.names, memberUris);
+
fronterNames = maybeTyped.value.names;
} catch (error) {
return err(`error fetching fronter names: ${error}`);
}
···
// make client
const atpClient = await getAtpClient(did);
+
let memberUris, fronterNames;
+
try {
+
memberUris = record.members.map((m) => parseMemberId(m));
+
fronterNames = await getFronterNames(record.names, memberUris);
+
} catch (error) {
+
return err(`error fetching fronter names: ${error}`);
+
}
+
// put
let maybeRecord = await atpClient.post("com.atproto.repo.putRecord", {
input: {
repo: did,
collection: fronterSchema.object.shape.$type.expected,
rkey: `${collection}_${rkey}`,
-
record,
+
record: { ...record, names: fronterNames },
validate: false,
},
headers: { authorization: `Bearer ${authToken}` },
});
if (!maybeRecord.ok)
return err(maybeRecord.data.message ?? maybeRecord.data.error);
-
-
let memberUris, fronterNames;
-
try {
-
memberUris = record.member.map((m) => parseMemberId(m));
-
fronterNames = await getFronterNames(record.name, memberUris);
-
} catch (error) {
-
return err(`error fetching fronter names: ${error}`);
-
}
return ok({
did,