Giter Club home page Giter Club logo

mirainotes's Introduction

Mirai Notes

A simple UWP / Android notes app that provides synchronization with Google Task and can be also used offline. Build status

Screenshots

Features

  • All the Google Task features:
    • Create task lists
    • Create task and subtasks
    • Delete/Update/Move tasks and subtasks
    • Etc...
  • Synchronization with Google Tasks
  • Offline support
  • Themes and accent colors
  • Task reminders
  • Password protection when the app starts
  • And many more...

Installation

UWP

Manual Installation

  • Go into the Windows Settings -> Updates & Security ->For Developers
  • Select the Sideload apps checkbox
  • Download the latest version of the app in the Release section
  • Decompress the zip file into any folder
  • Right-click on the Add-AppDevPackage.ps1 file. Choose Run with PowerShell and follow the prompts. You will be prompted to install my developer certificate and app Run with powershell
  • When the app package has been installed, the PowerShell window displays this message: Your app was successfully installed. After that just click the Start button to search for the app, and then launch it.

Android

Support

If you have any bug report, suggestion, feature request, etc, please go into the Issues section and create a new issue.

Note: I'm looking for a new app icon, if you would like to donate one i won't stop you :D**

Donations

I hope you are enjoying using this app, If you would like to support my work by buying me a coffee / beer, please send me an email

Building / Debugging

  • In the MiraiNotes.Shared project, you need to include a class called Secrets and that class must include something like this:
    public class Secrets
    {
        //Google secrets
#if Android
        public const string ClientId = "your android client id";
        public const string ClientSecret = "leave this one empty";
        public const string RedirectUrl = "the android redirect url, used by the login service";
        public const string AppCenterSecret = "the android app center secret";
#else
        public const string ClientId = "your uwp client id";
        public const string ClientSecret = "your uwp client secret";
        public const string RedirectUrl = "the uwp redirect url, used by the login service";
#endif

        //DbSecrets
        // This size of the IV (in bytes) must = (keysize / 8).  Default keysize is 256, so the IV must be
        // 32 bytes long.  Using a 16 character string here gives us 32 bytes when converted to a byte array.
        public const string InitVector = "your_initvector";
        // This constant is used to determine the keysize of the encryption algorithm
        public const int KeySize = 256;

        public const string Password = "the db password";
    }    

UWP

  • Just follow the above instructions (the ones in the Installation section) if you want to create a release package, otherwise just run in UwpDebug mode.

Android

  • AOT does not work!
  • If for some reason, you want to compile the .aab file, you need to be in AndroidRelease mode, the .keystore file must be in the same folder as the android project. Open a vs command prompt (visual studio currently doesnt support this format) and navigate to the MiraiNotes.Android folder. Run the following, replacing with the appropiate values:
msbuild /restore MiraiNotes.Android.csproj /t:SignAndroidPackage /p:Configuration=AndroidRelease /p:AndroidKeyStore=True /p:AndroidSigningKeyStore=your_keystore_file.keystore "/p:AndroidSigningStorePass=your_password" /p:AndroidSigningKeyAlias=your_keystore_file_alias "/p:AndroidSigningKeyPass=your_password"

mirainotes's People

Contributors

dependabot-preview[bot] avatar wolfteam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

mirainotes's Issues

Fix Java.Lang.RuntimeException in DialogService.ShowSnackBar (System.String msg, System.String action, System.Boolean displayOnContentFrame, System.Nullable`1[T] longSnackbar)

Version 1.1.2.0(5)

Stacktrace

MiraiNotes.Android.Services.DialogService.ShowSnackBar (System.String msg, System.String action, System.Boolean displayOnContentFrame, System.Nullable`1[T] longSnackbar) [0x00018] in <971f046df83d489bb3aef1a20f113e78>:0;MiraiNotes.Android.Services

MiraiNotes.Android.Background.SyncTask+<>c__DisplayClass11_0.b__4 () [0x0001d] in <971f046df83d489bb3aef1a20f113e78>:0;MiraiNotes.Android.Background

MvvmCross.Base.MvxMainThreadAsyncDispatcher+<>c__DisplayClass0_0.b__0 () [0x00000] in <26f1720ed3fc494f941e65b1c3a25809>:0;MvvmCross.Base

MvvmCross.Base.MvxMainThreadAsyncDispatcher+<>c__DisplayClass1_0.b__0 () [0x00011] in <26f1720ed3fc494f941e65b1c3a25809>:0;MvvmCross.Base

mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30);

Reason

Java.Lang.RuntimeException

Link to App Center

Toast notifications

Some user messages could be implemented using some form of toast.

  • Show a toast notification when the sync is in progress (only if the app is open)
  • Show a toast notification when the sync failed (if the app is open or if the app is in background)

Completed tasks

When there are completed tasks, maybe we should show them in a different listview.

  • Add a button to 'clear' all completed tasks

  • Add a button to 'unmark as completed'

Delete last task list

When you delete the last task list, you shouldn't be able to create more task, open pane,etc.
You can only add a new task list

Encrypt sensitive information

We need to encrypt the sensitive info thats stored in the db.
To keep the secret to decrypt the data we could use enviroment variables or something similar

Multi account support

Provide a way to view the tasks for a specific account and also allow to switch between them

Pagination support when syncing

By default the max number of tasks lists and task is 100, so if a user contains more than that we won't be able to sync the rest

Fix System.InvalidOperationException in NewTaskViewModel.InitView (System.String taskId)

Version 1.1.6(11)

Stacktrace

MiraiNotes.Android.ViewModels.NewTaskViewModel.InitView (System.String taskId) [0x001d2] in <73dcd22d6fc945f4b68c02435bfaedab>:0;MiraiNotes.Android.ViewModels

MiraiNotes.Android.ViewModels.NewTaskViewModel.Initialize () [0x000ca] in <73dcd22d6fc945f4b68c02435bfaedab>:0;MiraiNotes.Android.ViewModels

MvvmCross.Navigation.MvxNavigationService.Navigate[TParameter,TResult] (MvvmCross.ViewModels.MvxViewModelRequest request, MvvmCross.ViewModels.IMvxViewModel`2[TParameter,TResult] viewModel, TParameter param, MvvmCross.ViewModels.IMvxBundle presentationBundle, System.Threading.CancellationToken cancellationToken, MvvmCross.Navigation.EventArguments.IMvxNavigateEventArgs args) <0x7d3ef26f50 + 0x0089b> in <084ff9503a0f4edf88eae8fc5170f9cb>:0;MvvmCross.Navigation

MvvmCross.Navigation.MvxNavigationService.Navigate[TParameter,TResult] (System.Type viewModelType, TParameter param, MvvmCross.ViewModels.IMvxBundle presentationBundle, System.Threading.CancellationToken cancellationToken) <0x7d3ef296b0 + 0x0047f> in <084ff9503a0f4edf88eae8fc5170f9cb>:0;MvvmCross.Navigation

MiraiNotes.Android.ViewModels.TasksViewModel.OnTaskSelected (System.String taskId) [0x00092] in <73dcd22d6fc945f4b68c02435bfaedab>:0;MiraiNotes.Android.ViewModels

MiraiNotes.Android.ViewModels.TasksViewModel.b__76_0 (MiraiNotes.Android.ViewModels.TaskItemViewModel task) [0x00083] in <73dcd22d6fc945f4b68c02435bfaedab>:0;MiraiNotes.Android.ViewModels

MvvmCross.Commands.MvxAsyncCommandBase.ExecuteConcurrentAsync (System.Object parameter, System.Boolean hideCanceledException) [0x0010e] in <084ff9503a0f4edf88eae8fc5170f9cb>:0;MvvmCross.Commands

MvvmCross.Commands.MvxAsyncCommandBase.ExecuteAsync (System.Object parameter, System.Boolean hideCanceledException) [0x00085] in <084ff9503a0f4edf88eae8fc5170f9cb>:0;MvvmCross.Commands

MvvmCross.Commands.MvxAsyncCommandBase.Execute (System.Object parameter) [0x0009a] in <084ff9503a0f4edf88eae8fc5170f9cb>:0;MvvmCross.Commands

Reason

System.InvalidOperationException

Link to App Center

Add a settings page

I need to implement some settings + view to change theme, show notifications, etc

Allow multi-select in task content page

Theres currently a bug when you select all and then click in a item, making the rest of items dissapear...
The multi select should be available for "Mark as Complete", "Delete"

Multiple requests

On an a slow connection, the app may crash

  • If you select different task lists
  • If you select different tasks in the task listview

I should use a cancelation token

Subtasks

Add a way to show/create subtasks of a task

  • Show an icon indicating that the tasks contains subtasks

    • Only in the content frame
  • Show

    • It must be visible in the content and pane frame
  • Create (from the pane frame)

    • The option must be possible in the the pane frame
  • Remove

    • The option must be possible in the pane frame
  • Edit

    • When the user clicks on the subtasks in the content frame, it will be opened as a normal task, from there, it can be updated as any regular task
  • Move (content and pane frame)

    • When the user clicks on the subtask in the content frame, it will be opened as a normal task and it can be moved from there.
    • When the user updates/creates a task and selects to store the task in a different task list (on the pane frame) the task and subtasks should be moved to the desired task list
  • Mark as completed

    • The option must be possible in the content and pane frame

Login doesn't work

Currently, the login operation doesn't work.
image

Is there any way to skip login and use it offline?

Fix System.NullReferenceException: Object reference not set to an instance of an object in NewTaskFragment.EnableMenuOptions ()

Version 1.1.9(19)

Stacktrace

MiraiNotes.Android.Views.Fragments.NewTaskFragment.EnableMenuOptions () [0x0000b] in <51b36c82391f4af3bfd64794d64bbad1>:0;MiraiNotes.Android.Views.Fragments

MiraiNotes.Android.Views.Fragments.NewTaskFragment.OnPrepareOptionsMenu (Android.Views.IMenu menu) [0x00093] in <51b36c82391f4af3bfd64794d64bbad1>:0;MiraiNotes.Android.Views.Fragments

Reason

System.NullReferenceException: Object reference not set to an instance of an object

Link to App Center

Fix System.NullReferenceException in C:\Users\Efrain Bastidas\Desktop\Proyectos\MiraiNotes\MiraiNotes.Android\Background\SyncBackgroundService.cs line 62

Version 1.1.2.0(5)

Stacktrace

MiraiNotes.Android.Background.SyncBackgroundService.OnHandleIntent (Android.Content.Intent intent) [0x00068] in C:\Users\Efrain Bastidas\Desktop\Proyectos\MiraiNotes\MiraiNotes.Android\Background\SyncBackgroundService.cs:62;MiraiNotes.Android.Background

Reason

System.NullReferenceException

Link to App Center

Updating task list title

When you update the task list title, for some reason is not getting updated in the Tasks content page

Selected task gets unselected when sorting

When you have 1 task selected in the task listview and try to sort it, the task gets deselected. For some reason selection changed get triggered (which explains why it gets unselected)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.