mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: show appflowy document path in debug info
This commit is contained in:
parent
f2cd3846f1
commit
3d0036a926
@ -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");
|
||||
}
|
||||
}
|
||||
|
@ -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';
|
||||
@ -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;
|
||||
}
|
||||
});
|
||||
@ -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();
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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,
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user