127 Commits

Author SHA1 Message Date
c72cf0f96f Move to iCloud: Clear the git repo state 2020-10-21 16:26:40 +02:00
704329e3d5 Fix setting up an empty repo
Fixes APP-EQ
2020-10-21 15:32:33 +02:00
07dd127f7f Add some logging statements
This is cleary causing some problems. Maybe with the logs I can figure
out what is wrong.
2020-10-21 13:49:57 +02:00
018dd4ca36 Fix reset repo 2020-10-21 04:29:01 +02:00
c34b329852 Handle setting up remote with a blank repo
This isn't perfect as we're guessing the remote's main branch, but it'll
do. We need this as I'm no longer ever calling 'git clone'. It's always
a fetch.

The good part is that this uses dart_git a lot :)
2020-10-20 14:07:27 +02:00
9f53115616 ios: Add iCloud capability
I cannot see the GitJournal app's data in my iCloud, but I believe maybe
my app needs to go through the app review process.
2020-10-19 20:01:36 +02:00
4f0d065bf7 Simplify the code 2020-10-17 12:38:21 +02:00
5441700f28 Move building the repo's path logic to one place
Instead of having it duplicated
2020-10-17 12:33:19 +02:00
81bd1322a6 Settings: Rename internalRepoFolderName to folderName 2020-10-17 12:28:14 +02:00
bad1a03812 Implement moving the Git Repo to a folder accessible by other apps
This doesn't seem to move it to the SD card, but it does move it to a
public location. This is an Android specific feature.

Not sure if this is allowed with Android 11

Related to #99
Fixes #154
2020-10-17 12:24:06 +02:00
fd74a86abf Remove the whole local/remoteConfigured settings
We now infer this by checking if the directory exists, and by reading
the git config. It's a bit slower, but it's a far better method. I can
add a cache later, if it turns out to be too slow.
2020-10-16 15:13:34 +02:00
c63b984443 Try to guess the remote's default branch
This is an ugly hack and a proper solution should be implemented.
2020-10-16 14:08:47 +02:00
5c2e336343 Save Notes Cache in the cache directory
It shouldn't be saved in the Documents folder. Now that this folder is
exposed on ios, I should remove all non-user related files from here.
2020-10-16 01:10:18 +02:00
540078c413 Improve repo migrations
Earlier we had one folder 'journal_local', when the remote would be
setup a new folder called 'journal' would be created, and each all the
files would be copied over. This meant the local history was being
destroyed.

Now, we only have 1 folder 'journal', and on 'cloning', we add the url
as a remote, and do a git fetch + merge.

This simplifies everything drastically, and opens the door for multiple
remotes.
2020-10-15 12:18:47 +02:00
9499cea164 Remove Settings global
Stop it being a singleton. This means it needs to be passed around a
lot. This sucks, but it's how it should be. I shouldn't be using a
global variable to get around this.

This is needed as Settings will soon become repo specific when we
support multiple repos.

This breaks saving the settings in a file, that feature was toggled off
anyway. It needs to be thought over again.
2020-10-09 00:59:19 +02:00
84c67a08db Log an exception properly 2020-09-28 13:05:09 +02:00
58de0498ac Replace git pull with git fetch + merge
This way we can swap the merge out easily for our own custom merge code.
Also, this makes it easier to do a merge as a way of migrating.

This commit probably breaks stuff on ios
2020-09-26 20:27:07 +02:00
15c5d5e422 Another case of the Settings singleton 2020-09-25 01:07:35 +02:00
eb4d99338b Remove some uses of the Settings singleton
It needs to be removed from everywhere.
2020-09-25 00:40:23 +02:00
fe08834259 Split Settings into AppSettings and Settings
This way I can eventually change Settings into RepoSettings without
breaking anything.
2020-09-25 00:33:54 +02:00
f30c52f595 Move all persistent state from AppState to Settings
This way all the persistant state of the app is managed from the same
place. It makes everything much easier. Also, it's required for when
GitJournal supports multiple repositories.
2020-09-24 23:45:37 +02:00
4bcbf8226a Move onBoardingCompleted from AppState to Settings
I want to get rid of the AppState entirely. It serves exactly the same
purpose as Settings.
2020-08-16 15:29:49 +02:00
9d00fdac06 Use import_sorter
flutter pub run import_sorter:main --no-comments

The code feels much cleaner
2020-07-24 12:43:28 +02:00
84fab89f48 Do not allow us to edit the Note Editor if the Note cannot be saved
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
2020-07-13 17:13:02 +02:00
c98d01415f NoteRename: Do it before trying to get the lock
Another operation coule be blocking git.
2020-06-10 15:16:22 +02:00
97812e1501 Convert more prints to logs
This way they will show up in the LogViewer
2020-06-10 13:25:22 +02:00
5714642e15 NoteEditing: Make sure we report exceptions on save
We don't want to silently ignore these.
2020-06-10 13:18:48 +02:00
51ececd150 Immediately save the note when changing
Earlier we would wait till we got the 'mutex' to make a change, however
with the way libgit2 works, during a git push/pull other git operations
such as add/rm/commit block.

So performing a save, while the push/pull is occuring - might have
resulted in a note being lost

Related to #124
2020-06-10 13:03:28 +02:00
267ecb7499 Implement a very basic file system view
This will show all the files and not just the "notes". This way the user
can easily figure out why a file isn't included in the list of notes.

It's currently disabled by default as it clearly needs a lot more work.
2020-06-10 00:54:15 +02:00
d665981182 Allow Git remote host to be reset
This is quick and dirty way of fixing the problem. It doesn't migrate
the notes from the previous repo and just discards them, so you cannot
move your notes from one repo to another using GitJournal (for now), but
at least its better than having to re-install the app.

Related to #36
2020-05-26 23:53:14 +02:00
ee1009b087 Avoid hardcoding the git repo folder's name everywhere
This way, in the future we can support multiple repos, and more
importantly it will be easier to reconfigure the git host.
2020-05-26 23:49:57 +02:00
c6ec94dab6 Log when lock obtained
Notes don't always seem to get deleted, and I'm not sure why that's
happening.
2020-05-18 00:35:48 +02:00
188740974f Firebase Analytics: Set onboarded property
This makes it easier to calculate the actual retention rate as some
40-50% of the users never land up setting up a git sync.
.
2020-05-13 11:56:36 +02:00
8636021952 SyncButton: Show number of unpushed changes
Related to #123
2020-05-01 11:09:40 +02:00
152a95d4e9 Record when an action is performed on a Note/Folder
This way I'll have statistics about how the app is used and more
importantly, figuring out crash reports will be easier as there will be
a rough trail of actions.
2020-04-22 01:31:48 +02:00
77e67fca11 Rename Folders properly
1. Actually rename the folder instead of calling rename with the oldPath
2. Inform the parentFolder that a sub-folder has been renamed so it can
accordingly update its mapping.

Fixes #108
2020-04-20 02:11:42 +02:00
5784399ac6 Remove NotesFolderFS::insert
The position of the note in the folder doesn't matter as Virtual folders
on top of this sort it according to how to how the user wants them to be
sorted.
2020-04-20 01:56:32 +02:00
ff2ac647c5 Remove unused imports 2020-04-17 10:33:31 +02:00
6c47016c8b logException: Also log to Sentry 2020-04-17 09:42:19 +02:00
bbaf5b4452 Wait for previous completion of loadNotes
Fixes APP-R
2020-04-16 09:35:18 +02:00
bb0e574495 Abstract out the logging
This way moving away from Fimber will be much easier.
2020-04-04 11:50:57 +02:00
fe08b53539 Add a .gitjournal.yaml file in a folder
This file will be added to save the settings of how we want that folder
to behave. For example - default Editor, view, sorting mode, etc.

This feature is currently disabled as it will only be a part of the pro
mode.
2020-03-31 14:02:38 +02:00
965639e6f2 Add the concept of Folder Settings
This contains the default editor / view / sortingMode / etc. For now the
folder settings are shared among all Folders. But the idea is that we
should be able to set different settings per folder (real or virtual)
2020-03-31 11:16:04 +02:00
577b73ff3c SyncButton: Seperate pulling and pushing
This way we also refresh the view after the pulling, as we don't need to
wait for a push for that.
2020-03-30 13:00:28 +02:00
a99eca9131 Simplify code by using pathSpec 2020-03-21 00:52:54 +01:00
eb7d7dc2e7 Add a lock between all git operations
This way in between a git add + git commit, no other git operation will
run. This rarely occurs but it was a posibility depending on the speed
of the users actions.
2020-03-21 00:44:14 +01:00
b252f037b3 Rename NotesFolder -> NotesFolderFS
And NotesFolderReadOnly to NotesFolder. It just makes more sense this
way as we're now getting more and more different "types" of
NotesFolders.
2020-03-15 02:01:07 +01:00
31262e5f7d Add some debug messages 2020-03-01 14:53:11 +01:00
d50f772468 Only have one SortingMode class
It doesn't make sense to duplicate it.
2020-03-01 13:40:16 +01:00
78d7e6cef0 Integrate the NotesCache
It doesn't make any difference as -

1. The sort order shown our SortedNotesFolder is different
2. Rebuilds of the tree affect everything. Even the elements which
should be in the correct place.
2020-02-28 14:55:52 +01:00