You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							74 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							74 lines
						
					
					
						
							1.8 KiB
						
					
					
				| part of '../neon_files.dart'; | |
|  | |
| abstract class FilesBrowserBlocEvents { | |
|   void setPath(final List<String> path); | |
|  | |
|   void createFolder(final List<String> path); | |
| } | |
|  | |
| abstract class FilesBrowserBlocStates { | |
|   BehaviorSubject<Result<List<WebDavFile>>> get files; | |
|  | |
|   BehaviorSubject<List<String>> get path; | |
| } | |
|  | |
| class FilesBrowserBloc extends InteractiveBloc implements FilesBrowserBlocEvents, FilesBrowserBlocStates { | |
|   FilesBrowserBloc( | |
|     this._requestManager, | |
|     this.options, | |
|     this.account, | |
|   ) { | |
|     unawaited(refresh()); | |
|   } | |
|  | |
|   final RequestManager _requestManager; | |
|   final FilesAppSpecificOptions options; | |
|   final Account account; | |
|  | |
|   @override | |
|   void dispose() { | |
|     unawaited(files.close()); | |
|     unawaited(path.close()); | |
|     super.dispose(); | |
|   } | |
|  | |
|   @override | |
|   BehaviorSubject<Result<List<WebDavFile>>> files = BehaviorSubject<Result<List<WebDavFile>>>(); | |
|  | |
|   @override | |
|   BehaviorSubject<List<String>> path = BehaviorSubject<List<String>>.seeded([]); | |
|  | |
|   @override | |
|   Future refresh() async { | |
|     await _requestManager.wrapWebDav<List<WebDavFile>>( | |
|       account.id, | |
|       'files-${path.value.join('/')}', | |
|       files, | |
|       () async => account.client.webdav.propfind( | |
|         path.value.join('/'), | |
|         prop: WebDavPropWithoutValues.fromBools( | |
|           davgetcontenttype: true, | |
|           davgetetag: true, | |
|           davgetlastmodified: true, | |
|           nchaspreview: true, | |
|           ocsize: true, | |
|           ocfavorite: true, | |
|         ), | |
|         depth: '1', | |
|       ), | |
|       (final response) => response.toWebDavFiles().sublist(1), | |
|       emitEmptyCache: true, | |
|     ); | |
|   } | |
|  | |
|   @override | |
|   void setPath(final List<String> p) { | |
|     path.add(p); | |
|     unawaited(refresh()); | |
|   } | |
|  | |
|   @override | |
|   void createFolder(final List<String> path) { | |
|     wrapAction(() async => account.client.webdav.mkcol(path.join('/'))); | |
|   } | |
| }
 | |
| 
 |