unblocking topics in refactored settings screen

This commit is contained in:
Roland Osborne 2023-09-06 14:50:27 -07:00
parent b1557bf204
commit 0d04c26b2a
3 changed files with 17 additions and 9 deletions

View File

@ -465,7 +465,7 @@ export function useCardContext() {
}, },
clearChannelFlag: async (cardId, channelId) => { clearChannelFlag: async (cardId, channelId) => {
const { guid } = access.current || {}; const { guid } = access.current || {};
await store.actions.setCardChannelItemBlocked(guid, cardId, channelId); await store.actions.clearCardChannelItemBlocked(guid, cardId, channelId);
setCardChannelField(cardId, channelId, 'blocked', false); setCardChannelField(cardId, channelId, 'blocked', false);
}, },
setTopicFlag: async (cardId, channelId, topicId) => { setTopicFlag: async (cardId, channelId, topicId) => {

View File

@ -125,7 +125,7 @@ export function Settings() {
<Text style={styles.name} numberOfLines={1} ellipsizeMode={'tail'}>{ item.name }</Text> <Text style={styles.name} numberOfLines={1} ellipsizeMode={'tail'}>{ item.name }</Text>
<Text style={styles.handle} numberOfLines={1} ellipsizeMode={'tail'}>{ item.handle }</Text> <Text style={styles.handle} numberOfLines={1} ellipsizeMode={'tail'}>{ item.handle }</Text>
</View> </View>
<TouchableOpacity onPress={() => unblock(actions.unblockContact, item.cardId)}> <TouchableOpacity onPress={() => unblock(actions.unblockContact, { cardId: item.cardId })}>
<Text style={styles.restore}>{ state.strings.restore }</Text> <Text style={styles.restore}>{ state.strings.restore }</Text>
</TouchableOpacity> </TouchableOpacity>
</View> </View>
@ -139,7 +139,7 @@ export function Settings() {
<View style={styles.detail}> <View style={styles.detail}>
<Text style={styles.name} numberOfLines={1} ellipsizeMode={'tail'}>{ item.subject }</Text> <Text style={styles.name} numberOfLines={1} ellipsizeMode={'tail'}>{ item.subject }</Text>
</View> </View>
<TouchableOpacity onPress={() => unblock(actions.unblockTopic, item.cardId, item.channelId)}> <TouchableOpacity onPress={() => unblock(actions.unblockTopic, { cardId: item.cardId, channelId: item.channelId })}>
<Text style={styles.restore}>{ state.strings.restore }</Text> <Text style={styles.restore}>{ state.strings.restore }</Text>
</TouchableOpacity> </TouchableOpacity>
</View> </View>
@ -691,7 +691,7 @@ export function Settings() {
<FlatList <FlatList
data={state.topics} data={state.topics}
renderItem={BlockedTopic} renderItem={BlockedTopic}
keyExtractor={item => item.topicId} keyExtractor={item => `${item.cardId}.${item.channelId}`}
/> />
)} )}
</View> </View>

View File

@ -88,9 +88,9 @@ export function useSettings() {
const setChannelItem = (item) => { const setChannelItem = (item) => {
const profileGuid = profile.state?.identity?.guid; const profileGuid = profile.state?.identity?.guid;
const { logo, subject } = getChannelSubjectLogo(null, profileGuid, item, card.state.cards, card.actions.getCardImageUrl); const { logo, subject } = getChannelSubjectLogo(item.cardId, profileGuid, item, card.state.cards, card.actions.getCardImageUrl);
return { return {
cardId: null, cardId: item.cardId,
channelId: item.channelId, channelId: item.channelId,
created: item.detail.created, created: item.detail.created,
logo: logo, logo: logo,
@ -112,10 +112,10 @@ export function useSettings() {
}); });
updateState({ contacts: sorted }); updateState({ contacts: sorted });
contacts.current = []; cardChannels.current = [];
contacts.forEach(contact => { contacts.forEach(contact => {
const filtered = Array.from(contact.channels.values()).filter(topic => topic.blocked); const filtered = Array.from(contact.channels.values()).filter(topic => topic.blocked);
const mapped = filtered.map(setChannelItem).map(item => ({ ...item, cardId: contact.card.cardId })); const mapped = filtered.map(item => setChannelItem({ ...item, cardId: contact.card.cardId }));
cardChannels.current = cardChannels.current.concat(mapped); cardChannels.current = cardChannels.current.concat(mapped);
}); });
const merged = cardChannels.current.concat(channels.current); const merged = cardChannels.current.concat(channels.current);
@ -315,9 +315,17 @@ export function useSettings() {
removeKey: async () => { removeKey: async () => {
await removeKey(); await removeKey();
}, },
unblockContact: async (cardId) => { unblockContact: async ({ cardId }) => {
await card.actions.clearCardFlag(cardId); await card.actions.clearCardFlag(cardId);
}, },
unblockTopic: async ({ cardId, channelId }) => {
if (cardId) {
await card.actions.clearChannelFlag(cardId, channelId);
}
else {
await channel.actions.clearChannelFlag(channelId);
}
},
}; };
return { state, actions }; return { state, actions };