Do not accept stories without a name and no deletedAtTimestamp
This commit is contained in:
parent
f09b214016
commit
0a81376ca0
2 changed files with 39 additions and 3 deletions
|
@ -1305,12 +1305,14 @@ export async function mergeStoryDistributionListRecord(
|
|||
details.push('adding unknown fields');
|
||||
}
|
||||
|
||||
const deletedAtTimestamp = getTimestampFromLong(
|
||||
storyDistributionListRecord.deletedAtTimestamp
|
||||
);
|
||||
|
||||
const storyDistribution: StoryDistributionWithMembersType = {
|
||||
id: listId,
|
||||
name: String(storyDistributionListRecord.name),
|
||||
deletedAtTimestamp: isMyStories
|
||||
? undefined
|
||||
: getTimestampFromLong(storyDistributionListRecord.deletedAtTimestamp),
|
||||
deletedAtTimestamp: isMyStories ? undefined : deletedAtTimestamp,
|
||||
allowsReplies: Boolean(storyDistributionListRecord.allowsReplies),
|
||||
isBlockList: Boolean(storyDistributionListRecord.isBlockList),
|
||||
members: remoteListMembers,
|
||||
|
@ -1352,6 +1354,14 @@ export async function mergeStoryDistributionListRecord(
|
|||
details.push('clearing unknown fields');
|
||||
}
|
||||
|
||||
const isBadRemoteData = !deletedAtTimestamp && !storyDistribution.name;
|
||||
if (isBadRemoteData) {
|
||||
Object.assign(storyDistribution, {
|
||||
name: localStoryDistributionList.name,
|
||||
members: localStoryDistributionList.members,
|
||||
});
|
||||
}
|
||||
|
||||
const { hasConflict, details: conflictDetails } = doRecordsConflict(
|
||||
toStoryDistributionListRecord(storyDistribution),
|
||||
storyDistributionListRecord
|
||||
|
|
|
@ -1746,6 +1746,10 @@ async function _deleteAllStoryDistributions(): Promise<void> {
|
|||
async function createNewStoryDistribution(
|
||||
distribution: StoryDistributionWithMembersType
|
||||
): Promise<void> {
|
||||
strictAssert(
|
||||
distribution.name,
|
||||
'Distribution list does not have a valid name'
|
||||
);
|
||||
await channels.createNewStoryDistribution(distribution);
|
||||
}
|
||||
async function getAllStoryDistributionsWithMembers(): Promise<
|
||||
|
@ -1761,6 +1765,17 @@ async function getStoryDistributionWithMembers(
|
|||
async function modifyStoryDistribution(
|
||||
distribution: StoryDistributionType
|
||||
): Promise<void> {
|
||||
if (distribution.deletedAtTimestamp) {
|
||||
strictAssert(
|
||||
!distribution.name,
|
||||
'Attempt to delete distribution list but still has a name'
|
||||
);
|
||||
} else {
|
||||
strictAssert(
|
||||
distribution.name,
|
||||
'Cannot clear distribution list name without deletedAtTimestamp set'
|
||||
);
|
||||
}
|
||||
await channels.modifyStoryDistribution(distribution);
|
||||
}
|
||||
async function modifyStoryDistributionMembers(
|
||||
|
@ -1779,6 +1794,17 @@ async function modifyStoryDistributionWithMembers(
|
|||
toRemove: Array<UUIDStringType>;
|
||||
}
|
||||
): Promise<void> {
|
||||
if (distribution.deletedAtTimestamp) {
|
||||
strictAssert(
|
||||
!distribution.name,
|
||||
'Attempt to delete distribution list but still has a name'
|
||||
);
|
||||
} else {
|
||||
strictAssert(
|
||||
distribution.name,
|
||||
'Cannot clear distribution list name without deletedAtTimestamp set'
|
||||
);
|
||||
}
|
||||
await channels.modifyStoryDistributionWithMembers(distribution, options);
|
||||
}
|
||||
async function deleteStoryDistribution(id: UUIDStringType): Promise<void> {
|
||||
|
|
Loading…
Add table
Reference in a new issue