|  |  | @ -98,56 +98,54 @@ class _HomePageState extends State<HomePage> { | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   @override |  |  |  |   @override | 
			
		
	
		
		
			
				
					
					|  |  |  |   Widget build(final BuildContext context) => ResultBuilder<Iterable<AppImplementation>>.behaviorSubject( |  |  |  |   Widget build(final BuildContext context) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         stream: _appsBloc.appImplementations, |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         builder: (final context, final appImplementations) => StreamBuilder<AppImplementation>( |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |           stream: _appsBloc.activeApp, |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |           builder: (final context, final activeAppSnapshot) => OptionBuilder<NavigationMode>( |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             option: _globalOptions.navigationMode, |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             builder: (final context, final navigationMode) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |               final drawerAlwaysVisible = navigationMode == NavigationMode.drawerAlwaysVisible; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     const drawer = NeonDrawer(); |  |  |  |     const drawer = NeonDrawer(); | 
			
		
	
		
		
			
				
					
					|  |  |  |     const appBar = NeonAppBar(); |  |  |  |     const appBar = NeonAppBar(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |               Widget body = Builder( |  |  |  |     final appView = ResultBuilder<Iterable<AppImplementation>>.behaviorSubject( | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 builder: (final context) => Column( |  |  |  |       stream: _appsBloc.appImplementations, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                   children: [ |  |  |  |       builder: (final context, final appImplementations) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     if (appImplementations.hasData) ...[ |  |  |  |         if (!appImplementations.hasData) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                       if (appImplementations.requireData.isEmpty) ...[ |  |  |  |           return const SizedBox(); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         Expanded( |  |  |  |         } | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                           child: Center( |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (appImplementations.requireData.isEmpty) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           return Center( | 
			
		
	
		
		
			
				
					
					|  |  |  |             child: Text( |  |  |  |             child: Text( | 
			
		
	
		
		
			
				
					
					|  |  |  |               AppLocalizations.of(context).errorNoCompatibleNextcloudAppsFound, |  |  |  |               AppLocalizations.of(context).errorNoCompatibleNextcloudAppsFound, | 
			
		
	
		
		
			
				
					
					|  |  |  |               textAlign: TextAlign.center, |  |  |  |               textAlign: TextAlign.center, | 
			
		
	
		
		
			
				
					
					|  |  |  |             ), |  |  |  |             ), | 
			
		
	
		
		
			
				
					
					|  |  |  |                           ), |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                         ), |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                       ] else ...[ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                         if (activeAppSnapshot.hasData) ...[ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                           Expanded( |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                             child: activeAppSnapshot.requireData.page, |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                           ), |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                         ], |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                       ], |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                     ], |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                   ], |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 ), |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |           ); |  |  |  |           ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |               body = MultiProvider( |  |  |  |         return StreamBuilder<AppImplementation>( | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 providers: _appsBloc.appBlocProviders, |  |  |  |           stream: _appsBloc.activeApp, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 child: Scaffold( |  |  |  |           builder: (final context, final activeAppIDSnapshot) { | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if (!activeAppIDSnapshot.hasData) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |               return const SizedBox(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             return activeAppIDSnapshot.requireData.page; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           }, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       }, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     final body = OptionBuilder<NavigationMode>( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       option: _globalOptions.navigationMode, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       builder: (final context, final navigationMode) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         final drawerAlwaysVisible = navigationMode == NavigationMode.drawerAlwaysVisible; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         final body = Scaffold( | 
			
		
	
		
		
			
				
					
					|  |  |  |           key: _scaffoldKey, |  |  |  |           key: _scaffoldKey, | 
			
		
	
		
		
			
				
					
					|  |  |  |           resizeToAvoidBottomInset: false, |  |  |  |           resizeToAvoidBottomInset: false, | 
			
		
	
		
		
			
				
					
					|  |  |  |           drawer: !drawerAlwaysVisible ? drawer : null, |  |  |  |           drawer: !drawerAlwaysVisible ? drawer : null, | 
			
		
	
		
		
			
				
					
					|  |  |  |           appBar: appBar, |  |  |  |           appBar: appBar, | 
			
		
	
		
		
			
				
					
					|  |  |  |                   body: body, |  |  |  |           body: appView, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 ), |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         ); |  |  |  |         ); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (drawerAlwaysVisible) { |  |  |  |         if (drawerAlwaysVisible) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 body = Row( |  |  |  |           return Row( | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             children: [ |  |  |  |             children: [ | 
			
		
	
		
		
			
				
					
					|  |  |  |               drawer, |  |  |  |               drawer, | 
			
		
	
		
		
			
				
					
					|  |  |  |               Expanded( |  |  |  |               Expanded( | 
			
		
	
	
		
		
			
				
					|  |  | @ -157,6 +155,10 @@ class _HomePageState extends State<HomePage> { | 
			
		
	
		
		
			
				
					
					|  |  |  |           ); |  |  |  |           ); | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return body; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       }, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     return WillPopScope( |  |  |  |     return WillPopScope( | 
			
		
	
		
		
			
				
					
					|  |  |  |       onWillPop: () async { |  |  |  |       onWillPop: () async { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (_scaffoldKey.currentState!.isDrawerOpen) { |  |  |  |         if (_scaffoldKey.currentState!.isDrawerOpen) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -167,10 +169,10 @@ class _HomePageState extends State<HomePage> { | 
			
		
	
		
		
			
				
					
					|  |  |  |         _scaffoldKey.currentState!.openDrawer(); |  |  |  |         _scaffoldKey.currentState!.openDrawer(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         return false; |  |  |  |         return false; | 
			
		
	
		
		
			
				
					
					|  |  |  |       }, |  |  |  |       }, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       child: MultiProvider( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         providers: _appsBloc.appBlocProviders, | 
			
		
	
		
		
			
				
					
					|  |  |  |         child: body, |  |  |  |         child: body, | 
			
		
	
		
		
			
				
					
					|  |  |  |               ); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             }, |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |           ), |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       ), |  |  |  |       ), | 
			
		
	
		
		
			
				
					
					|  |  |  |     ); |  |  |  |     ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |