mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
fix mobile switch and inbox selection
Signed-off-by: kenny lopez <klopez4212@gmail.com>
This commit is contained in:
@@ -76,6 +76,7 @@ class ActivityPage extends HookConsumerWidget {
|
||||
// otherwise recomputes its deep link after the read marker changes and
|
||||
// opens the latest event instead of the oldest unread one the user chose.
|
||||
final selectedItemTarget = useState<FeedItem?>(null);
|
||||
final selectedItemForDetail = useState<InboxItem?>(null);
|
||||
final isWideInbox =
|
||||
MediaQuery.sizeOf(context).width >= _wideInboxBreakpoint;
|
||||
final headerTitleStyle = context.textTheme.titleMedium?.copyWith(
|
||||
@@ -119,16 +120,21 @@ class ActivityPage extends HookConsumerWidget {
|
||||
final hasSelectedItem = visibleItems.any(
|
||||
(item) => item.id == selectedItemId.value,
|
||||
);
|
||||
if (!hasSelectedItem) {
|
||||
final retainsSelectedDetail =
|
||||
selectedItemForDetail.value?.id == selectedItemId.value;
|
||||
if (!hasSelectedItem && !retainsSelectedDetail) {
|
||||
selectedItemId.value = visibleItems.first.id;
|
||||
selectedItemTarget.value = null;
|
||||
selectedItemForDetail.value = null;
|
||||
}
|
||||
return null;
|
||||
}, [isWideInbox, visibleItemIdsKey, filter.value, unreadOnly.value]);
|
||||
final selectedItem = visibleItems.cast<InboxItem?>().firstWhere(
|
||||
(item) => item?.id == selectedItemId.value,
|
||||
orElse: () => null,
|
||||
);
|
||||
final selectedItem =
|
||||
visibleItems.cast<InboxItem?>().firstWhere(
|
||||
(item) => item?.id == selectedItemId.value,
|
||||
orElse: () => null,
|
||||
) ??
|
||||
selectedItemForDetail.value;
|
||||
|
||||
// Preload sender profiles for visible rows.
|
||||
final preloadPubkeys = {
|
||||
@@ -209,6 +215,7 @@ class ActivityPage extends HookConsumerWidget {
|
||||
if (isWideInbox) {
|
||||
selectedItemId.value = item.id;
|
||||
selectedItemTarget.value = target;
|
||||
selectedItemForDetail.value = item;
|
||||
markItemRead(item);
|
||||
return;
|
||||
}
|
||||
@@ -356,6 +363,7 @@ class ActivityPage extends HookConsumerWidget {
|
||||
onChanged: (nextFilter) {
|
||||
selectedItemId.value = null;
|
||||
selectedItemTarget.value = null;
|
||||
selectedItemForDetail.value = null;
|
||||
filter.value = nextFilter;
|
||||
},
|
||||
),
|
||||
|
||||
@@ -69,9 +69,7 @@ class ChannelsNotifier extends AsyncNotifier<List<Channel>> {
|
||||
sessionState.status != SessionStatus.connected;
|
||||
ref.listen(relaySessionProvider, (previous, next) {
|
||||
if (next.status != SessionStatus.connected) return;
|
||||
if (waitingForInitialConnection &&
|
||||
!_hasLoaded &&
|
||||
!connected.isCompleted) {
|
||||
if (waitingForInitialConnection && !connected.isCompleted) {
|
||||
connected.complete();
|
||||
} else if (previous?.status != SessionStatus.connected) {
|
||||
unawaited(_backstopRefresh());
|
||||
|
||||
Reference in New Issue
Block a user