Skip to content

Commit

Permalink
chore: show appflowy document path in debug info
Browse files Browse the repository at this point in the history
  • Loading branch information
appflowy committed Apr 28, 2022
1 parent f2cd384 commit 3d0036a
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 91 deletions.
38 changes: 16 additions & 22 deletions frontend/app_flowy/lib/startup/tasks/rust_sdk.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,21 @@ class InitRustSDKTask extends LaunchTask {

@override
Future<void> initialize(LaunchContext context) async {
switch (context.env) {
case IntegrationMode.release:
Directory documentsDir = await getApplicationDocumentsDirectory();
return Directory('${documentsDir.path}/flowy').create().then(
(Directory directory) async {
await context.getIt<FlowySDK>().init(directory);
},
);
case IntegrationMode.develop:
Directory documentsDir = await getApplicationDocumentsDirectory();
return Directory('${documentsDir.path}/flowy_dev').create().then(
(Directory directory) async {
await context.getIt<FlowySDK>().init(directory);
},
);
case IntegrationMode.test:
final directory = Directory("${Directory.current.path}/.sandbox");
await context.getIt<FlowySDK>().init(directory);
break;
default:
assert(false, 'Unsupported env');
}
await appFlowyDocumentDirectory().then((directory) async {
await context.getIt<FlowySDK>().init(directory);
});
}
}

Future<Directory> appFlowyDocumentDirectory() async {
Directory documentsDir = await getApplicationDocumentsDirectory();

switch (integrationEnv()) {
case IntegrationMode.develop:
return Directory('${documentsDir.path}/flowy_dev').create();
case IntegrationMode.release:
return Directory('${documentsDir.path}/flowy').create();
case IntegrationMode.test:
return Directory("${Directory.current.path}/.sandbox");
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:app_flowy/startup/tasks/rust_sdk.dart';
import 'package:app_flowy/workspace/presentation/home/home_stack.dart';
import 'package:app_flowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:easy_localization/easy_localization.dart';
Expand Down Expand Up @@ -46,67 +47,7 @@ class QuestionBubble extends StatelessWidget {
_launchURL("https://discord.gg/9Q2xaN37tV");
break;
case BubbleAction.debug:
final deviceInfoPlugin = DeviceInfoPlugin();
final deviceInfo = deviceInfoPlugin.deviceInfo;

deviceInfo.then((info) {
var debugText = "";
info.toMap().forEach((key, value) {
debugText = debugText + "$key: $value\n";
});

Clipboard.setData(ClipboardData(text: debugText));

Widget toast = Container(
padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 12.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(25.0),
color: theme.main1,
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(Icons.check),
const SizedBox(
width: 12.0,
),
Text(LocaleKeys.questionBubble_debug_success.tr()),
],
),
);

fToast.showToast(
child: toast,
gravity: ToastGravity.BOTTOM,
toastDuration: const Duration(seconds: 3),
);
}).catchError((error) {
Log.info("Debug info has not yet been implemented on this platform");

Widget toast = Container(
padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 12.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(25.0),
color: Colors.red,
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(Icons.close),
const SizedBox(
width: 12.0,
),
Text(LocaleKeys.questionBubble_debug_fail.tr()),
],
),
);

fToast.showToast(
child: toast,
gravity: ToastGravity.BOTTOM,
toastDuration: const Duration(seconds: 3),
);
}, test: (e) => e is UnimplementedError);
const _DebugToast().show();
break;
}
});
Expand All @@ -130,6 +71,78 @@ class QuestionBubble extends StatelessWidget {
}
}

class _DebugToast extends StatelessWidget {
const _DebugToast({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return FutureBuilder(
future: Future(() async {
var debugInfo = "";
debugInfo += await _getDeviceInfo();
debugInfo += await _getDocumentPath();

Clipboard.setData(ClipboardData(text: debugInfo));
}),
builder: (BuildContext context, AsyncSnapshot<void> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError) {
return _done(context, Text("Error: ${snapshot.error}"));
} else {
return _done(context, null);
}
} else {
return const CircularProgressIndicator();
}
},
);
}

Widget _done(BuildContext context, Widget? error) {
final theme = context.watch<AppTheme>();
return Container(
padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 12.0),
decoration: BoxDecoration(borderRadius: BorderRadius.circular(25.0), color: theme.main1),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(Icons.check),
const SizedBox(width: 12.0),
(error == null) ? Text(LocaleKeys.questionBubble_debug_success.tr()) : error
],
),
);
}

void show() {
fToast.showToast(
child: this,
gravity: ToastGravity.BOTTOM,
toastDuration: const Duration(seconds: 3),
);
}

Future<String> _getDeviceInfo() async {
final deviceInfoPlugin = DeviceInfoPlugin();
final deviceInfo = deviceInfoPlugin.deviceInfo;

return deviceInfo.then((info) {
var debugText = "";
info.toMap().forEach((key, value) {
debugText = debugText + "$key: $value\n";
});
return debugText;
});
}

Future<String> _getDocumentPath() async {
return appFlowyDocumentDirectory().then((directory) {
final path = directory.path.toString();
return "Document: $path\n";
});
}
}

class QuestionBubbleActionSheet with ActionList<BubbleActionWrapper>, FlowyOverlayDelegate {
final Function(dartz.Option<BubbleAction>) onSelected;
final _items = BubbleAction.values.map((action) => BubbleActionWrapper(action)).toList();
Expand Down
6 changes: 4 additions & 2 deletions shared-lib/flowy-sync/src/client_folder/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,10 @@ impl FolderPadBuilder {

// TODO: Reconvert from history if delta.to_str() failed.
let folder_json = delta.to_str()?;
let mut folder: FolderPad = serde_json::from_str(&folder_json)
.map_err(|e| CollaborateError::internal().context(format!("Deserialize delta to folder failed: {}", e)))?;
let mut folder: FolderPad = serde_json::from_str(&folder_json).map_err(|e| {
tracing::error!("Deserialize folder from json failed: {}", folder_json);
return CollaborateError::internal().context(format!("Deserialize delta to folder failed: {}", e));
})?;
folder.delta = delta;
Ok(folder)
}
Expand Down
7 changes: 1 addition & 6 deletions shared-lib/lib-infra/src/util.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
pub fn move_vec_element<T, F>(
vec: &mut Vec<T>,
filter: F,
_from_index: usize,
mut to_index: usize,
) -> Result<bool, String>
pub fn move_vec_element<T, F>(vec: &mut Vec<T>, filter: F, _from_index: usize, to_index: usize) -> Result<bool, String>
where
F: FnMut(&T) -> bool,
{
Expand Down

0 comments on commit 3d0036a

Please sign in to comment.