Files
GitJournal/lib/utils.dart
Vishesh Handa 7ae37d1d40 When sharing a note share its metadata as well
Fixes https://github.com/GitJournal/GitJournal/issues/360

I'm not sure if this is ideal as now the metadata such as 'modified' and
'created' will also be shared. On the other hand, the metadata often has
valuable information which is otherwise getting lost.
2020-12-16 12:29:29 +01:00

110 lines
2.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:package_info/package_info.dart';
import 'package:provider/provider.dart';
import 'package:share/share.dart';
import 'package:gitjournal/core/notes_folder_fs.dart';
import 'package:gitjournal/screens/note_editor.dart';
import 'package:gitjournal/settings.dart';
import 'app.dart';
import 'core/note.dart';
import 'repository.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(Repository stateContainer, Note deletedNote) {
return SnackBar(
content: Text(tr('widgets.FolderView.noteDeleted')),
action: SnackBarAction(
label: tr('widgets.FolderView.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(
Settings settings,
NotesFolderFS rootFolder,
EditorType editorType,
) {
var spec = settings.defaultNewNoteFolderSpec;
switch (editorType) {
case EditorType.Journal:
spec = settings.journalEditordefaultNewNoteFolderSpec;
break;
default:
break;
}
return rootFolder.getFolderWithSpec(spec) ?? rootFolder;
}
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);
}
bool folderWithSpecExists(BuildContext context, String spec) {
var rootFolder = Provider.of<NotesFolderFS>(context, listen: false);
return rootFolder.getFolderWithSpec(spec) != null;
}
String toCurlCommand(String url, Map<String, String> headers) {
var headersStr = "";
headers.forEach((key, value) {
headersStr += ' -H "$key: $value" ';
});
return "curl -X GET '$url' $headersStr";
}
Future<void> shareNote(Note note) async {
return Share.share(note.serialize());
}
Future<Note> getTodayJournalEntry(NotesFolderFS rootFolder) async {
var today = DateTime.now();
var matches = await rootFolder.matchNotes((n) async {
var dt = n.created;
if (dt == null) {
return false;
}
return dt.year == today.year &&
dt.month == today.month &&
dt.day == today.day;
});
return matches.isNotEmpty ? matches[0] : null;
}