|
@@ -1,7 +1,5 @@
|
|
|
-import 'dart:async';
|
|
|
import 'dart:convert';
|
|
|
import 'dart:io';
|
|
|
-import 'package:app_flowy/startup/tasks/rust_sdk.dart';
|
|
|
import 'package:app_flowy/plugins/doc/application/share_service.dart';
|
|
|
import 'package:app_flowy/workspace/application/markdown/document_markdown.dart';
|
|
|
import 'package:flowy_sdk/protobuf/flowy-document/entities.pb.dart';
|
|
@@ -20,11 +18,14 @@ class DocShareBloc extends Bloc<DocShareEvent, DocShareState> {
|
|
|
: super(const DocShareState.initial()) {
|
|
|
on<DocShareEvent>((event, emit) async {
|
|
|
await event.map(
|
|
|
- shareMarkdown: (ShareMarkdown value) async {
|
|
|
+ shareMarkdown: (ShareMarkdown shareMarkdown) async {
|
|
|
await service.exportMarkdown(view).then((result) {
|
|
|
result.fold(
|
|
|
- (value) => emit(DocShareState.finish(
|
|
|
- left(_convertDocumentToMarkdown(value)))),
|
|
|
+ (value) => emit(
|
|
|
+ DocShareState.finish(
|
|
|
+ left(_saveMarkdown(value, shareMarkdown.path)),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
(error) => emit(DocShareState.finish(right(error))),
|
|
|
);
|
|
|
});
|
|
@@ -37,40 +38,23 @@ class DocShareBloc extends Bloc<DocShareEvent, DocShareState> {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- ExportDataPB _convertDocumentToMarkdown(ExportDataPB value) {
|
|
|
- final json = jsonDecode(value.data);
|
|
|
- final document = Document.fromJson(json);
|
|
|
- final result = documentToMarkdown(document);
|
|
|
- value.data = result;
|
|
|
- writeFile(result);
|
|
|
+ ExportDataPB _saveMarkdown(ExportDataPB value, String path) {
|
|
|
+ final markdown = _convertDocumentToMarkdown(value);
|
|
|
+ value.data = markdown;
|
|
|
+ File(path).writeAsStringSync(markdown);
|
|
|
return value;
|
|
|
}
|
|
|
|
|
|
- Future<Directory> get _exportDir async {
|
|
|
- Directory documentsDir = await appFlowyDocumentDirectory();
|
|
|
-
|
|
|
- return documentsDir;
|
|
|
- }
|
|
|
-
|
|
|
- Future<String> get _localPath async {
|
|
|
- final dir = await _exportDir;
|
|
|
- return dir.path;
|
|
|
- }
|
|
|
-
|
|
|
- Future<File> get _localFile async {
|
|
|
- final path = await _localPath;
|
|
|
- return File('$path/${view.name}.md');
|
|
|
- }
|
|
|
-
|
|
|
- Future<File> writeFile(String md) async {
|
|
|
- final file = await _localFile;
|
|
|
- return file.writeAsString(md);
|
|
|
+ String _convertDocumentToMarkdown(ExportDataPB value) {
|
|
|
+ final json = jsonDecode(value.data);
|
|
|
+ final document = Document.fromJson(json);
|
|
|
+ return documentToMarkdown(document);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@freezed
|
|
|
class DocShareEvent with _$DocShareEvent {
|
|
|
- const factory DocShareEvent.shareMarkdown() = ShareMarkdown;
|
|
|
+ const factory DocShareEvent.shareMarkdown(String path) = ShareMarkdown;
|
|
|
const factory DocShareEvent.shareText() = ShareText;
|
|
|
const factory DocShareEvent.shareLink() = ShareLink;
|
|
|
}
|