@river-build/sdk
Version:
For more details, visit the following resources:
40 lines • 1.45 kB
JavaScript
import { bin_equal } from '@river-build/dlog';
// Generic compactFunc function
function compactFunc(elements, keyFn) {
if (elements.length === 0) {
return elements;
}
let j = 1;
for (let i = 1; i < elements.length; i++) {
const key2 = keyFn(elements[i]);
const key1 = keyFn(elements[i - 1]);
if (!bin_equal(key2, key1)) {
elements[j] = elements[i];
j++;
}
}
return elements.slice(0, j);
}
// / nasty bug with the insert_sorted function, it was inserting an extra element at the end
// / every insert, we need to remove duplicates
export function snapshotMigration0001(snapshot) {
if (snapshot.members) {
snapshot.members.joined = compactFunc(snapshot.members.joined, (m) => m.userAddress);
}
switch (snapshot.content?.case) {
case 'spaceContent': {
snapshot.content.value.channels = compactFunc(snapshot.content.value.channels, (c) => c.channelId);
break;
}
case 'userContent': {
snapshot.content.value.memberships = compactFunc(snapshot.content.value.memberships, (c) => c.streamId);
break;
}
case 'userSettingsContent': {
snapshot.content.value.fullyReadMarkers = compactFunc(snapshot.content.value.fullyReadMarkers, (c) => c.streamId);
break;
}
}
return snapshot;
}
//# sourceMappingURL=snapshotMigration0001.js.map