Add blocks state to Convo
This commit is contained in:
@@ -84,6 +84,7 @@ export class Convo {
|
|||||||
sender: AppBskyActorDefs.ProfileViewBasic | undefined
|
sender: AppBskyActorDefs.ProfileViewBasic | undefined
|
||||||
recipients: AppBskyActorDefs.ProfileViewBasic[] | undefined = undefined
|
recipients: AppBskyActorDefs.ProfileViewBasic[] | undefined = undefined
|
||||||
snapshot: ConvoState | undefined
|
snapshot: ConvoState | undefined
|
||||||
|
blocks: AppBskyActorDefs.ProfileViewBasic[] = []
|
||||||
|
|
||||||
constructor(params: ConvoParams) {
|
constructor(params: ConvoParams) {
|
||||||
this.id = nanoid(3)
|
this.id = nanoid(3)
|
||||||
@@ -145,6 +146,7 @@ export class Convo {
|
|||||||
error: undefined,
|
error: undefined,
|
||||||
sender: undefined,
|
sender: undefined,
|
||||||
recipients: undefined,
|
recipients: undefined,
|
||||||
|
blocks: undefined,
|
||||||
isFetchingHistory: this.isFetchingHistory,
|
isFetchingHistory: this.isFetchingHistory,
|
||||||
deleteMessage: undefined,
|
deleteMessage: undefined,
|
||||||
sendMessage: undefined,
|
sendMessage: undefined,
|
||||||
@@ -162,6 +164,7 @@ export class Convo {
|
|||||||
error: undefined,
|
error: undefined,
|
||||||
sender: this.sender!,
|
sender: this.sender!,
|
||||||
recipients: this.recipients!,
|
recipients: this.recipients!,
|
||||||
|
blocks: this.blocks,
|
||||||
isFetchingHistory: this.isFetchingHistory,
|
isFetchingHistory: this.isFetchingHistory,
|
||||||
deleteMessage: this.deleteMessage,
|
deleteMessage: this.deleteMessage,
|
||||||
sendMessage: this.sendMessage,
|
sendMessage: this.sendMessage,
|
||||||
@@ -177,6 +180,7 @@ export class Convo {
|
|||||||
error: this.error,
|
error: this.error,
|
||||||
sender: undefined,
|
sender: undefined,
|
||||||
recipients: undefined,
|
recipients: undefined,
|
||||||
|
blocks: undefined,
|
||||||
isFetchingHistory: false,
|
isFetchingHistory: false,
|
||||||
deleteMessage: undefined,
|
deleteMessage: undefined,
|
||||||
sendMessage: undefined,
|
sendMessage: undefined,
|
||||||
@@ -192,6 +196,7 @@ export class Convo {
|
|||||||
error: undefined,
|
error: undefined,
|
||||||
sender: undefined,
|
sender: undefined,
|
||||||
recipients: undefined,
|
recipients: undefined,
|
||||||
|
blocks: undefined,
|
||||||
isFetchingHistory: false,
|
isFetchingHistory: false,
|
||||||
deleteMessage: undefined,
|
deleteMessage: undefined,
|
||||||
sendMessage: undefined,
|
sendMessage: undefined,
|
||||||
@@ -366,6 +371,7 @@ export class Convo {
|
|||||||
this.convo = undefined
|
this.convo = undefined
|
||||||
this.sender = undefined
|
this.sender = undefined
|
||||||
this.recipients = undefined
|
this.recipients = undefined
|
||||||
|
this.blocks = []
|
||||||
this.snapshot = undefined
|
this.snapshot = undefined
|
||||||
|
|
||||||
this.status = ConvoStatus.Uninitialized
|
this.status = ConvoStatus.Uninitialized
|
||||||
@@ -385,11 +391,12 @@ export class Convo {
|
|||||||
|
|
||||||
private async setup() {
|
private async setup() {
|
||||||
try {
|
try {
|
||||||
const {convo, sender, recipients} = await this.fetchConvo()
|
const {convo, sender, recipients, blocks} = await this.fetchConvo()
|
||||||
|
|
||||||
this.convo = convo
|
this.convo = convo
|
||||||
this.sender = sender
|
this.sender = sender
|
||||||
this.recipients = recipients
|
this.recipients = recipients
|
||||||
|
this.blocks = blocks
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some validation prior to `Ready` status
|
* Some validation prior to `Ready` status
|
||||||
@@ -457,6 +464,7 @@ export class Convo {
|
|||||||
convo: ChatBskyConvoDefs.ConvoView
|
convo: ChatBskyConvoDefs.ConvoView
|
||||||
sender: AppBskyActorDefs.ProfileViewBasic | undefined
|
sender: AppBskyActorDefs.ProfileViewBasic | undefined
|
||||||
recipients: AppBskyActorDefs.ProfileViewBasic[]
|
recipients: AppBskyActorDefs.ProfileViewBasic[]
|
||||||
|
blocks: AppBskyActorDefs.ProfileViewBasic[]
|
||||||
}>
|
}>
|
||||||
| undefined
|
| undefined
|
||||||
async fetchConvo() {
|
async fetchConvo() {
|
||||||
@@ -466,6 +474,7 @@ export class Convo {
|
|||||||
convo: ChatBskyConvoDefs.ConvoView
|
convo: ChatBskyConvoDefs.ConvoView
|
||||||
sender: AppBskyActorDefs.ProfileViewBasic | undefined
|
sender: AppBskyActorDefs.ProfileViewBasic | undefined
|
||||||
recipients: AppBskyActorDefs.ProfileViewBasic[]
|
recipients: AppBskyActorDefs.ProfileViewBasic[]
|
||||||
|
blocks: AppBskyActorDefs.ProfileViewBasic[]
|
||||||
}>(async (resolve, reject) => {
|
}>(async (resolve, reject) => {
|
||||||
try {
|
try {
|
||||||
const response = await networkRetry(2, () => {
|
const response = await networkRetry(2, () => {
|
||||||
@@ -483,6 +492,14 @@ export class Convo {
|
|||||||
convo,
|
convo,
|
||||||
sender: convo.members.find(m => m.did === this.senderUserDid),
|
sender: convo.members.find(m => m.did === this.senderUserDid),
|
||||||
recipients: convo.members.filter(m => m.did !== this.senderUserDid),
|
recipients: convo.members.filter(m => m.did !== this.senderUserDid),
|
||||||
|
blocks:
|
||||||
|
convo.members.filter(m =>
|
||||||
|
Boolean(
|
||||||
|
m.viewer?.blocking ||
|
||||||
|
m.viewer?.blockingByList ||
|
||||||
|
m.viewer?.blockedBy,
|
||||||
|
),
|
||||||
|
) || [],
|
||||||
})
|
})
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
reject(e)
|
reject(e)
|
||||||
@@ -494,41 +511,25 @@ export class Convo {
|
|||||||
return this.pendingFetchConvo
|
return this.pendingFetchConvo
|
||||||
}
|
}
|
||||||
|
|
||||||
private async refreshConvo() {
|
private async refreshConvo({commitResult = false} = {}) {
|
||||||
try {
|
try {
|
||||||
const {convo, sender, recipients} = await this.fetchConvo()
|
const {convo, sender, recipients, blocks} = await this.fetchConvo()
|
||||||
// throw new Error('UNCOMMENT TO TEST REFRESH FAILURE')
|
// throw new Error('UNCOMMENT TO TEST REFRESH FAILURE')
|
||||||
this.convo = convo || this.convo
|
this.convo = convo || this.convo
|
||||||
this.sender = sender || this.sender
|
this.sender = sender || this.sender
|
||||||
this.recipients = recipients || this.recipients
|
this.recipients = recipients || this.recipients
|
||||||
|
this.blocks = blocks || this.blocks
|
||||||
|
|
||||||
|
if (commitResult) {
|
||||||
|
this.commit()
|
||||||
|
}
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(e, {context: `Convo: failed to refresh convo`})
|
logger.error(e, {context: `Convo: failed to refresh convo`})
|
||||||
|
|
||||||
this.footerItems.set(ConvoItemError.Network, {
|
|
||||||
type: 'error-recoverable',
|
|
||||||
key: ConvoItemError.Network,
|
|
||||||
code: ConvoItemError.Network,
|
|
||||||
retry: () => {
|
|
||||||
this.footerItems.delete(ConvoItemError.Network)
|
|
||||||
this.resume()
|
|
||||||
},
|
|
||||||
})
|
|
||||||
this.commit()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async revalidateConvo() {
|
async revalidateConvo() {
|
||||||
try {
|
this.refreshConvo({commitResult: true})
|
||||||
const {convo, sender, recipients} = await this.fetchConvo()
|
|
||||||
// throw new Error('UNCOMMENT TO TEST REFRESH FAILURE')
|
|
||||||
this.convo = convo || this.convo
|
|
||||||
this.sender = sender || this.sender
|
|
||||||
this.recipients = recipients || this.recipients
|
|
||||||
} catch (e: any) {
|
|
||||||
logger.error(e, {context: `Convo: failed to revalidate convo`})
|
|
||||||
} finally {
|
|
||||||
this.commit()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async fetchMessageHistory() {
|
async fetchMessageHistory() {
|
||||||
|
|||||||
@@ -120,6 +120,7 @@ export type ConvoStateUninitialized = {
|
|||||||
error: undefined
|
error: undefined
|
||||||
sender: undefined
|
sender: undefined
|
||||||
recipients: undefined
|
recipients: undefined
|
||||||
|
blocks: undefined
|
||||||
isFetchingHistory: false
|
isFetchingHistory: false
|
||||||
deleteMessage: undefined
|
deleteMessage: undefined
|
||||||
sendMessage: undefined
|
sendMessage: undefined
|
||||||
@@ -133,6 +134,7 @@ export type ConvoStateInitializing = {
|
|||||||
error: undefined
|
error: undefined
|
||||||
sender: undefined
|
sender: undefined
|
||||||
recipients: undefined
|
recipients: undefined
|
||||||
|
blocks: undefined
|
||||||
isFetchingHistory: boolean
|
isFetchingHistory: boolean
|
||||||
deleteMessage: undefined
|
deleteMessage: undefined
|
||||||
sendMessage: undefined
|
sendMessage: undefined
|
||||||
@@ -146,6 +148,7 @@ export type ConvoStateReady = {
|
|||||||
error: undefined
|
error: undefined
|
||||||
sender: AppBskyActorDefs.ProfileViewBasic
|
sender: AppBskyActorDefs.ProfileViewBasic
|
||||||
recipients: AppBskyActorDefs.ProfileViewBasic[]
|
recipients: AppBskyActorDefs.ProfileViewBasic[]
|
||||||
|
blocks: AppBskyActorDefs.ProfileViewBasic[]
|
||||||
isFetchingHistory: boolean
|
isFetchingHistory: boolean
|
||||||
deleteMessage: DeleteMessage
|
deleteMessage: DeleteMessage
|
||||||
sendMessage: SendMessage
|
sendMessage: SendMessage
|
||||||
@@ -159,6 +162,7 @@ export type ConvoStateBackgrounded = {
|
|||||||
error: undefined
|
error: undefined
|
||||||
sender: AppBskyActorDefs.ProfileViewBasic
|
sender: AppBskyActorDefs.ProfileViewBasic
|
||||||
recipients: AppBskyActorDefs.ProfileViewBasic[]
|
recipients: AppBskyActorDefs.ProfileViewBasic[]
|
||||||
|
blocks: AppBskyActorDefs.ProfileViewBasic[]
|
||||||
isFetchingHistory: boolean
|
isFetchingHistory: boolean
|
||||||
deleteMessage: DeleteMessage
|
deleteMessage: DeleteMessage
|
||||||
sendMessage: SendMessage
|
sendMessage: SendMessage
|
||||||
@@ -172,6 +176,7 @@ export type ConvoStateSuspended = {
|
|||||||
error: undefined
|
error: undefined
|
||||||
sender: AppBskyActorDefs.ProfileViewBasic
|
sender: AppBskyActorDefs.ProfileViewBasic
|
||||||
recipients: AppBskyActorDefs.ProfileViewBasic[]
|
recipients: AppBskyActorDefs.ProfileViewBasic[]
|
||||||
|
blocks: AppBskyActorDefs.ProfileViewBasic[]
|
||||||
isFetchingHistory: boolean
|
isFetchingHistory: boolean
|
||||||
deleteMessage: DeleteMessage
|
deleteMessage: DeleteMessage
|
||||||
sendMessage: SendMessage
|
sendMessage: SendMessage
|
||||||
@@ -185,6 +190,7 @@ export type ConvoStateError = {
|
|||||||
error: any
|
error: any
|
||||||
sender: undefined
|
sender: undefined
|
||||||
recipients: undefined
|
recipients: undefined
|
||||||
|
blocks: undefined
|
||||||
isFetchingHistory: false
|
isFetchingHistory: false
|
||||||
deleteMessage: undefined
|
deleteMessage: undefined
|
||||||
sendMessage: undefined
|
sendMessage: undefined
|
||||||
|
|||||||
Reference in New Issue
Block a user