@river-build/sdk
Version:
For more details, visit the following resources:
43 lines • 1.99 kB
JavaScript
import { removeCommon } from './utils';
export class StreamStateView_Members_Solicitations {
streamId;
constructor(streamId) {
this.streamId = streamId;
}
initSolicitations(members, sigBundle, encryptionEmitter) {
encryptionEmitter?.emit('initKeySolicitations', this.streamId, members.map((member) => ({
userId: member.userId,
userAddress: member.userAddress,
solicitations: member.solicitations,
})), sigBundle);
}
applySolicitation(user, eventId, solicitation, sigBundle, encryptionEmitter) {
user.solicitations = user.solicitations.filter((x) => x.deviceKey !== solicitation.deviceKey);
const newSolicitation = {
deviceKey: solicitation.deviceKey,
fallbackKey: solicitation.fallbackKey,
isNewDevice: solicitation.isNewDevice,
sessionIds: solicitation.sessionIds.toSorted(),
srcEventId: eventId,
};
user.solicitations.push(newSolicitation);
encryptionEmitter?.emit('newKeySolicitation', this.streamId, user.userId, user.userAddress, newSolicitation, sigBundle);
}
applyFulfillment(user, fulfillment, sigBundle, encryptionEmitter) {
const index = user.solicitations.findIndex((x) => x.deviceKey === fulfillment.deviceKey);
if (index === undefined || index === -1) {
return;
}
const prev = user.solicitations[index];
const newEvent = {
deviceKey: prev.deviceKey,
fallbackKey: prev.fallbackKey,
isNewDevice: false,
sessionIds: [...removeCommon(prev.sessionIds, fulfillment.sessionIds.toSorted())],
srcEventId: prev.srcEventId,
};
user.solicitations[index] = newEvent;
encryptionEmitter?.emit('updatedKeySolicitation', this.streamId, user.userId, user.userAddress, newEvent, sigBundle);
}
}
//# sourceMappingURL=streamStateView_Members_Solicitations.js.map