From 7ffeeebe387d048de00d46969fa79fd0072d4818 Mon Sep 17 00:00:00 2001 From: Airyzz <36567925+Airyzz@users.noreply.github.com> Date: Wed, 23 Sep 2026 22:51:40 +0930 Subject: [PATCH 1/2] sync space ordering --- .../sidebar_entries_component.dart | 2 ++ .../matrix_sidebar_entries_component.dart | 31 ++++++++++++++----- .../lib/ui/molecules/space_group_widget.dart | 2 ++ commet/lib/ui/molecules/space_selector.dart | 7 +++++ 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/commet/lib/client/components/sidebar_component/sidebar_entries_component.dart b/commet/lib/client/components/sidebar_component/sidebar_entries_component.dart index fbac51ffd..06b4c2d4f 100644 --- a/commet/lib/client/components/sidebar_component/sidebar_entries_component.dart +++ b/commet/lib/client/components/sidebar_component/sidebar_entries_component.dart @@ -110,6 +110,8 @@ abstract class SidebarEntriesComponent String createFolder(Space space); + void save(); + addToFolder(Space space, String folderId, int index); removeFromFolder(Space space, String folderId); diff --git a/commet/lib/client/matrix/components/sidebar_entries/matrix_sidebar_entries_component.dart b/commet/lib/client/matrix/components/sidebar_entries/matrix_sidebar_entries_component.dart index 58a80b656..190b44ec5 100644 --- a/commet/lib/client/matrix/components/sidebar_entries/matrix_sidebar_entries_component.dart +++ b/commet/lib/client/matrix/components/sidebar_entries/matrix_sidebar_entries_component.dart @@ -5,6 +5,7 @@ import 'package:commet/client/space.dart'; import 'package:commet/debug/log.dart'; import 'package:commet/utils/debounce.dart'; import 'package:commet/utils/rng.dart'; +import 'package:matrix/matrix_api_lite/model/sync_update.dart'; import 'package:matrix/matrix_api_lite/utils/try_get_map_extension.dart'; import 'package:uuid/uuid.dart'; @@ -36,7 +37,21 @@ class MatrixSidebarEntriesComponent } catch (e, s) { Log.onError(e, s); } - SidebarEntriesComponent.onOrderChanged.listen(onChanged); + + client.matrixClient.onSync.stream.listen(_onSync); + } + + void _onSync(SyncUpdate event) { + if (event.accountData == null) return; + + bool changed = false; + + for (var ev in event.accountData!) { + if (ev.type == key) { + loadFromContent(ev.content); + changed = true; + } + } } void loadOrderFromAccountData() { @@ -45,7 +60,10 @@ class MatrixSidebarEntriesComponent if (data == null) return; var content = data.content as Map; + loadFromContent(content); + } + void loadFromContent(Map content) { var spaceData = content.tryGetMap("spaces"); if (spaceData != null) { @@ -102,10 +120,6 @@ class MatrixSidebarEntriesComponent static const key = "chat.commet.sidebar_ordering"; - void onChanged(event) { - serializeDebouncer.run(serialize); - } - void serialize() { var spaces = client.spaces.where((i) => i.isTopLevel); @@ -149,8 +163,6 @@ class MatrixSidebarEntriesComponent client.matrixClient .setAccountData(client.matrixClient.userID!, key, result); - - Log.i("Order data: ${result}"); } @override @@ -233,4 +245,9 @@ class MatrixSidebarEntriesComponent spaceToFolder.remove(space.identifier); getOrder(space); } + + @override + void save() { + serializeDebouncer.run(serialize); + } } diff --git a/commet/lib/ui/molecules/space_group_widget.dart b/commet/lib/ui/molecules/space_group_widget.dart index 596ab68dd..fb88b8e9d 100644 --- a/commet/lib/ui/molecules/space_group_widget.dart +++ b/commet/lib/ui/molecules/space_group_widget.dart @@ -342,6 +342,8 @@ class _SpaceGroupWidgetState extends State { "Adding ${space.space.displayName} to folder at index: $i"); component!.addToFolder( space.space, widget.folderId, index); + + component.save(); } } } diff --git a/commet/lib/ui/molecules/space_selector.dart b/commet/lib/ui/molecules/space_selector.dart index 18a274a08..8a8257d14 100644 --- a/commet/lib/ui/molecules/space_selector.dart +++ b/commet/lib/ui/molecules/space_selector.dart @@ -168,6 +168,7 @@ class SpaceSelectorState extends State { var component = space.client.getComponent()!; component.removeFromFolder(space, data.currentFolder!); + component.save(); } int i = adjustIndex(index, data.entry.id); @@ -217,12 +218,17 @@ class SpaceSelectorState extends State { var componentA = i.space.client.getComponent()!; + var folderId = componentA.createFolder(i.space); var space = (details.data.entry as SpaceSidebarEntry).space; var componentB = space.client.getComponent()!; + componentB.addToFolder(space, folderId, 1); + + componentA.save(); + componentB.save(); }, builder: (context, candidateData, rejectedData) { return tiamat.Tooltip( text: i.space.displayName, @@ -269,6 +275,7 @@ class SpaceSelectorState extends State { var component = space.client.getComponent()!; component.addToFolder(space, i.id, 0); + component.save(); }, builder: (BuildContext context, List candidateData, List rejectedData) { From ead870fa0b7c11ba37f163e2877ffebc00cfd024 Mon Sep 17 00:00:00 2001 From: Airyzz <36567925+Airyzz@users.noreply.github.com> Date: Wed, 23 Sep 2026 22:59:09 +0930 Subject: [PATCH 2/2] Update matrix_sidebar_entries_component.dart --- .../sidebar_entries/matrix_sidebar_entries_component.dart | 3 --- 1 file changed, 3 deletions(-) diff --git a/commet/lib/client/matrix/components/sidebar_entries/matrix_sidebar_entries_component.dart b/commet/lib/client/matrix/components/sidebar_entries/matrix_sidebar_entries_component.dart index 190b44ec5..01fa51ade 100644 --- a/commet/lib/client/matrix/components/sidebar_entries/matrix_sidebar_entries_component.dart +++ b/commet/lib/client/matrix/components/sidebar_entries/matrix_sidebar_entries_component.dart @@ -44,12 +44,9 @@ class MatrixSidebarEntriesComponent void _onSync(SyncUpdate event) { if (event.accountData == null) return; - bool changed = false; - for (var ev in event.accountData!) { if (ev.type == key) { loadFromContent(ev.content); - changed = true; } } }