mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-18 03:10:28 +08:00

In some rare cases the note just doesn't get saved on disk - in those cases instead of silently failing we will refuse to exit the note editor, forcing the user to copy the note and paste it somewhere else in order to not lose the date. This isn't the best solution, but it prevents data loss, in a few edge cases which I cannot reproduce. Fixes #124
70 lines
1.8 KiB
Dart
70 lines
1.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:gitjournal/core/notes_folder_fs.dart';
|
|
import 'package:gitjournal/screens/note_editor.dart';
|
|
import 'package:gitjournal/settings.dart';
|
|
import 'package:package_info/package_info.dart';
|
|
|
|
import 'app.dart';
|
|
import 'core/note.dart';
|
|
import 'state_container.dart';
|
|
import 'utils/logger.dart';
|
|
|
|
Future<String> getVersionString() async {
|
|
var info = await PackageInfo.fromPlatform();
|
|
var versionText = "";
|
|
if (info != null) {
|
|
versionText = info.appName + " " + info.version + "+" + info.buildNumber;
|
|
|
|
if (JournalApp.isInDebugMode) {
|
|
versionText += " (Debug)";
|
|
}
|
|
}
|
|
|
|
return versionText;
|
|
}
|
|
|
|
SnackBar buildUndoDeleteSnackbar(
|
|
StateContainer stateContainer, Note deletedNote) {
|
|
return SnackBar(
|
|
content: const Text('Note Deleted'),
|
|
action: SnackBarAction(
|
|
label: "Undo",
|
|
onPressed: () {
|
|
Log.d("Undoing delete");
|
|
stateContainer.undoRemoveNote(deletedNote);
|
|
},
|
|
),
|
|
);
|
|
}
|
|
|
|
void showSnackbar(BuildContext context, String message) {
|
|
var snackBar = SnackBar(content: Text(message));
|
|
Scaffold.of(context)
|
|
..removeCurrentSnackBar()
|
|
..showSnackBar(snackBar);
|
|
}
|
|
|
|
NotesFolderFS getFolderForEditor(
|
|
NotesFolderFS rootFolder,
|
|
EditorType editorType,
|
|
) {
|
|
var spec = Settings.instance.defaultNewNoteFolderSpec;
|
|
var journalSpec = Settings.instance.journalEditordefaultNewNoteFolderSpec;
|
|
|
|
switch (editorType) {
|
|
case EditorType.Journal:
|
|
return rootFolder.getFolderWithSpec(journalSpec);
|
|
default:
|
|
return rootFolder.getFolderWithSpec(spec);
|
|
}
|
|
}
|
|
|
|
Future<void> showAlertDialog(
|
|
BuildContext context, String title, String message) async {
|
|
var dialog = AlertDialog(
|
|
title: Text(title),
|
|
content: Text(message),
|
|
);
|
|
return showDialog(context: context, builder: (context) => dialog);
|
|
}
|