67 Commits

Author SHA1 Message Date
99e38b4ca0 Improve locking on boot
This way we show the cache loading screen for a shorter amount of time.
2021-12-07 12:31:50 +01:00
015659d58f Allow a note to be renamed to whatever
Earlier one could never change a note type, and therefore its extension.
Now you can rename a note's filename to whatever and accordingly the
editor will change.

A warning message is shown when changing the file type.

Fixes #474
2021-11-15 12:39:12 +01:00
6230e2b3df Rename AppSettings to AppConfig
I just want all the 'Settings' classes to the UI. In the end it really
doesn't matter. This was probably a waste of 5 minutes.
2021-10-27 20:47:57 +02:00
e1ea7a4953 Fetch the modified + created time from git
Fixes #78

This is probably the largest commit that I have ever made. From now on -
every File always has an mtime and ctime which is fetched from git.
Notes can optionally override that time by providing yaml metadata.

Additionally the 'filePath' and 'folderPath' is now relative to the
repoPath instead of being the full path.

This will slow down GitJournal like crazy as all the mtimes and ctime
still need to be cached. For my test repo it takes about 23 seconds for
GitJournal to become responsive.
2021-10-26 17:49:08 +02:00
28f34ca5e6 Avoid catching only Exceptions
We also occasionally get Errors in runtime. It seems like a terrible
decission for Error and Exception to not have a common subtype.
2021-10-20 09:59:14 +02:00
6a915864f2 Move NotesFolder's code to their own folder
The 'core' folder is becoming way too huge.
2021-10-15 12:31:35 +02:00
097ffc6b42 Support multi note selection
Fixes #90
2021-10-14 15:38:07 +02:00
f8d1e3b7f3 Improve Commit Messages 2021-10-14 14:10:42 +02:00
523dc9484e libgit2 doesn't always seem to delete the folder 2021-10-14 12:58:05 +02:00
33a731a3d7 Add reuse licensing to files in lib 2021-09-15 13:06:43 +02:00
01934bc504 Desktop: Enable fetch/push on linux 2021-08-24 17:25:13 +02:00
3a71cca202 Move logging code to its own folder 2021-07-30 14:39:13 +02:00
2505d00dfb Replace dart:io with universal_io
Platform from dart:io cannot be used on the web for reasons. And this
way we get a fake File/Directory class which we can use for atleast
running the web version, even if it won't work.
2021-07-30 11:39:26 +02:00
9328712de2 Settings: simplify 2021-07-26 22:04:40 +02:00
b2e08550bb Add GitConfig
This makes the Settings class smaller.
2021-07-26 20:18:22 +02:00
09026fc59e Add support for getting clone progress from git_bindings
This is hacky, and we're getting it through a file. Right now we aren't
doing anything with the progress, we're just fetching it.
2021-07-23 12:48:48 +02:00
4e1df9bc31 Use dart-git's merge when cloning 2021-07-08 10:06:56 +02:00
ea2e0f8df2 macos: Call the git exec for fetching / pushing
This doesn't work for keys which have passwords, but otherwise it seems
to work great.
2021-07-07 23:46:00 +02:00
0d3f7858df Add experimental flags to use Dart-git for merge / add / commit 2021-06-29 17:59:06 +02:00
528dfe1c08 Result++
Now comes the hard part of figuring out what to do when we get such
errors.
2021-06-10 19:51:27 +02:00
20c2277008 GitRepo: Minor refactor
Start using the Result class, and use the git_bindings with a prefix.
The git bindings are being phased out for dart-git.
2021-06-10 13:32:34 +02:00
cca40de706 Bump dart-git
Since dart-git's API has completely changed, this is a huge change. And
it's now obvious where all the code can fail. This needs a massive
re-write.
2021-06-05 13:39:46 +02:00
d6e2f09a72 Move all settings code to its own folder
Jumping around between the widgets / screens and outside is bit
confusing. Also this way, I can add the stories right here.
2021-06-05 12:23:28 +02:00
789a0b1208 Settings Screens: Null safety++ 2021-05-27 13:19:20 +02:00
3b5ff6c9df Core: Finish null safety migration 2021-05-25 09:54:19 +02:00
01dd8c6c7a Use dart-git for most operations in Desktop
libgit2 hasn't been hooked up so far. This way, almost everything but
cloning working.

Related to #137
2021-05-17 21:48:14 +02:00
48f431d2d2 Optional: Make Git Add/Rm/Commit use Dart-git
It's a quick toggle for easy testing.
2021-05-09 11:11:24 +02:00
d008f0d982 First version of dart migrate
Most of the files haven't been migrated. Lets work on this bit by bit
2021-04-10 22:18:35 +02:00
45344d1b75 Put current branch name in exception
Hopefully it will provide more context to debug #361 issue.
2021-03-06 15:31:24 +01:00
4c7efdb2dc Move cloning logic to its own file
This has gotten very complex and needs to be properly tested. It's the
number 1 bug.
2021-01-19 15:40:08 +01:00
9946993364 shouldLogException: Handle all exception types
Fixes APP-SB
2021-01-18 23:47:03 +01:00
c64d30ec2a Stop guessing the default branch
Talk to the remote via ssh and ask it which is the default branch. This
has only been implemented for Android right now, so this breaks the ios
build.

Fixes #363
2020-12-16 12:17:22 +01:00
704329e3d5 Fix setting up an empty repo
Fixes APP-EQ
2020-10-21 15:32:33 +02:00
98c92a3fe1 Handle new version of git_bindings
This changes the way the SSH keys are managed, they are no longer
managed by the git_bindings plugin and are instead just passed as
parameters. They are now saved in shared_prefs. This allows us to easily
have multiple ssh keys.

It also allows us to store the ssh keys in a more secure storage
location in the future.
2020-10-19 14:52:24 +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
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
eb4d99338b Remove some uses of the Settings singleton
It needs to be removed from everywhere.
2020-09-25 00:40:23 +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
b3014d4186 Log GitPush/Pull fails as errors
Instead of debug
2020-06-10 13:28:35 +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
66eeaa552b Bump git_bindings and pass fresh version of gitAuthor/Email
This way the Settings change for git author is immediately reflected.

Fixes #130
2020-05-13 11:36:08 +02:00
64bfefa266 Do not allow DartGit's exception to escape
DartGit is still quite experimental.
2020-05-01 11:22:02 +02:00
8636021952 SyncButton: Show number of unpushed changes
Related to #123
2020-05-01 11:09:40 +02:00
a0247e7c9e Ignore a few more git exceptions 2020-04-23 10:08:22 +02:00
0162d1e11a Only do a git push if one has commits to push
This is the first use of my pure Dart implementation of Git. Hurray!
Now hopefully, I can slowly get rid of git_bindings entirely.
2020-04-14 18:15:32 +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
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
ea8703518b Ignore more git ssh errors 2020-03-21 01:32:09 +01:00