@@ -15,6 +15,7 @@ class ChatModel extends SafeChangeNotifier {
1515 // The matrix dart SDK client
1616 final Client _client;
1717 String ? get myUserId => _client.userID;
18+ String ? get homeServerId => _client.homeserver? .host;
1819 bool isUserEvent (Event event) => myUserId == event.senderId;
1920 bool get isLogged => _client.isLogged ();
2021 bool get encryptionEnabled => _client.encryptionEnabled;
@@ -129,11 +130,10 @@ class ChatModel extends SafeChangeNotifier {
129130 return timeline.events.where ((e) => ! e.showAsBadge).toList ();
130131 }
131132
132- Stream <List <Room >> get spacesStream => joinedUpdateStream
133- .map ((e) => rooms.where ((e) => ! e.isArchived && e.isSpace).toList ());
133+ Stream <List <Room >> get spacesStream =>
134+ syncStream .map ((e) => rooms.where ((e) => e.isSpace).toList ());
134135
135- List <Room > get notArchivedSpaces =>
136- rooms.where ((e) => ! e.isArchived && e.isSpace).toList ();
136+ List <Room > get spaces => rooms.where ((e) => e.isSpace).toList ();
137137
138138 RoomsFilter ? _roomsFilter;
139139 RoomsFilter ? get roomsFilter => _roomsFilter;
@@ -277,6 +277,47 @@ class ChatModel extends SafeChangeNotifier {
277277 }
278278 }
279279
280+ Future <String ?> createSpace ({
281+ required String name,
282+ Visibility visibility = Visibility .public,
283+ List <String >? invite,
284+ List <Invite3pid >? invite3pid,
285+ String ? roomVersion,
286+ String ? topic,
287+ bool waitForSync = true ,
288+ String ? spaceAliasName,
289+ required Function (String error) onFail,
290+ required Function () onSuccess,
291+ }) async {
292+ _setProcessingJoinOrLeave (true );
293+ String ? spaceRoomId;
294+ try {
295+ printMessageInDebugMode ('Creating space...' );
296+ spaceRoomId = await _client.createSpace (
297+ name: name,
298+ visibility: visibility,
299+ invite: invite,
300+ invite3pid: invite3pid,
301+ roomVersion: roomVersion,
302+ topic: topic,
303+ waitForSync: waitForSync,
304+ spaceAliasName: spaceAliasName,
305+ );
306+ } on Exception catch (e, s) {
307+ printMessageInDebugMode (e, s);
308+ onFail (e.toString ());
309+ }
310+ if (spaceRoomId != null ) {
311+ final space = _client.getRoomById (spaceRoomId);
312+ if (space != null ) {
313+ onSuccess ();
314+ setSelectedRoom (space);
315+ }
316+ }
317+ _setProcessingJoinOrLeave (false );
318+ return spaceRoomId;
319+ }
320+
280321 Future <void > joinDirectChat (
281322 String userId, {
282323 required Function (String error) onFail,
0 commit comments