@ -13,11 +13,9 @@ class SpacesDrawer extends StatelessWidget {
@ override
@ override
Widget build ( BuildContext context ) {
Widget build ( BuildContext context ) {
final currentIndex = controller . activeSpaceId = = null
final currentIndex = controller . spacesEntries . indexWhere ( ( space ) = >
? 0
controller . activeSpacesEntry . runtimeType = = space . runtimeType & &
: controller . spaces
( controller . activeSpaceId = = space . getSpace ( context ) ? . id ) ) ;
. indexWhere ( ( space ) = > controller . activeSpaceId = = space . id ) +
1 ;
final Map < SpacesEntry , dynamic > spaceHierarchy =
final Map < SpacesEntry , dynamic > spaceHierarchy =
Map . fromEntries ( controller . spacesEntries . map ( ( e ) = > MapEntry ( e , null ) ) ) ;
Map . fromEntries ( controller . spacesEntries . map ( ( e ) = > MapEntry ( e , null ) ) ) ;
@ -30,35 +28,27 @@ class SpacesDrawer extends StatelessWidget {
return false ;
return false ;
} ,
} ,
child: Column (
child: Column (
children: List . generate (
children: List . generate ( spaceHierarchy . length , ( index ) {
spaceHierarchy . length ,
( index ) {
if ( index = = 0 ) {
return ListTile (
selected: currentIndex = = index ,
leading: const Icon ( Icons . keyboard_arrow_down ) ,
title: Text ( L10n . of ( context ) ! . allChats ) ,
onTap: ( ) = > controller . setActiveSpacesEntry (
context ,
null ,
) ,
) ;
} else {
final space = spaceHierarchy . keys . toList ( ) [ index ] ;
final space = spaceHierarchy . keys . toList ( ) [ index ] ;
final room = space . getSpace ( context ) ! ;
final room = space . getSpace ( context ) ;
final active = currentIndex = = index ;
return ListTile (
return ListTile (
selected: currentIndex = = index ,
selected: active ,
leading: Avatar (
leading: index = = 0
? const Icon ( Icons . keyboard_arrow_down )
: room = = null
? space . getIcon ( active )
: Avatar (
mxContent: room . avatar ,
mxContent: room . avatar ,
name: space . getName ( context ) ,
name: space . getName ( context ) ,
size: 24 ,
size: 24 ,
fontSize: 12 ,
fontSize: 12 ,
) ,
) ,
title: Text ( space . getName ( context ) ) ,
title: Text ( space . getName ( context ) ) ,
subtitle: room . topic . isEmpty
subtitle: room ? . topic . isEmpty ? ? true
? null
? null
: Tooltip (
: Tooltip (
message: room . topic ,
message: room ! . topic ,
child: Text (
child: Text (
room . topic . replaceAll ( ' \n ' , ' ' ) ,
room . topic . replaceAll ( ' \n ' , ' ' ) ,
softWrap: false ,
softWrap: false ,
@ -69,15 +59,15 @@ class SpacesDrawer extends StatelessWidget {
context ,
context ,
space ,
space ,
) ,
) ,
trailing: IconButton (
trailing: room ! = null
? IconButton (
icon: const Icon ( Icons . edit ) ,
icon: const Icon ( Icons . edit ) ,
tooltip: L10n . of ( context ) ! . edit ,
tooltip: L10n . of ( context ) ! . edit ,
onPressed: ( ) = > controller . editSpace ( context , room . id ) ,
onPressed: ( ) = > controller . editSpace ( context , room . id ) ,
) ,
)
: null ,
) ;
) ;
}
} ) ,
} ,
) ,
) ,
) ,
) ;
) ;
}
}