Skip to content

Commit

Permalink
Merge branch 'master' into fdroid
Browse files Browse the repository at this point in the history
  • Loading branch information
dreautall authored Apr 23, 2023
2 parents fc5c335 + 1a200ed commit d054f71
Show file tree
Hide file tree
Showing 22 changed files with 1,121 additions and 331 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ jobs:
- run: |
sed -i 's/^\(version: [0-9\.]\{1,\}\(-[a-z]\{1,\}\)\{0,1\}\)$/\1+${{ github.run_number }}/m' pubspec.yaml
# No dart analytics.
- run: dart --disable-analytics

# No flutter analytics.
- run: flutter config --no-analytics

Expand Down
Binary file added .playstore/en_badge_web_generic.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Waterfly III

<p align="center">
<a href="https://play.google.com/store/apps/details?id=com.dreautall.waterflyiii"><img src=".playstore/en_badge_web_generic.png" width="200" /></a>
<a href="https://f-droid.org/en/packages/com.dreautall.waterflyiii/"><img src=".github/assets/fdroid_get-it-on.ong" width="200" /></a>
</p>


**Unofficial** Android App for [Firefly III](https://github.com/firefly-iii/firefly-iii), a free and open source personal finance manager.

The app design is heavily influenced by [Bluecoins](https://play.google.com/store/apps/details?id=com.rammigsoftware.bluecoins).
Expand Down Expand Up @@ -41,13 +41,13 @@ The app does **not** try to replicate every single feature that the Webinterface

*All made with a Google Pixel 5.*

Dashboard | Transactions | Balance Sheet |
| :-: | :-: | :-: |
<img src=".github/assets/screen_dashboard.png" width="250" />|<img src=".github/assets/screen_transactions_overview.png" width="250" />|<img src=".github/assets/screen_balance.png" width="250" />
| Dashboard | Transactions | Balance Sheet |
| :-----------------------------------------------------------: | :-----------------------------------------------------------------------: | :---------------------------------------------------------: |
| <img src=".github/assets/screen_dashboard.png" width="250" /> | <img src=".github/assets/screen_transactions_overview.png" width="250" /> | <img src=".github/assets/screen_balance.png" width="250" /> |

Transaction Edit | Split Transaction | Transaction Attachments
| :-: | :-: | :-: |
<img src=".github/assets/screen_transaction.png" width="250" />|<img src=".github/assets/screen_transaction_split.png" width="250" />|<img src=".github/assets/screen_transaction_attachments.png" width="250" />
| Transaction Edit | Split Transaction | Transaction Attachments |
| :-------------------------------------------------------------: | :-------------------------------------------------------------------: | :-------------------------------------------------------------------------: |
| <img src=".github/assets/screen_transaction.png" width="250" /> | <img src=".github/assets/screen_transaction_split.png" width="250" /> | <img src=".github/assets/screen_transaction_attachments.png" width="250" /> |

## Technology

Expand All @@ -57,4 +57,4 @@ The app is built using [Flutter](https://flutter.dev/), and tries to keep to the

Having troubles with [Bluecoins](https://play.google.com/store/apps/details?id=com.rammigsoftware.bluecoins) syncing across devices and not always storing attachments online, I was looking for a self-hosted alternative and discovered [Firefly III](https://www.firefly-iii.org/). After a [quick script to migrate from Bluecoins to Firefly](https://github.com/dreautall/bluecoins-to-fireflyiii), the only thing left was to download an app to easy track expenses on-the-go... or so I thought.

Unfortunately, I discovered that the existing Android Apps for Firefly III are either outdated or very buggy and hardly maintained. Always wanting to use Flutter for something, I started to make my own app, modeling it after the Bluecoins app I used so far and whose interface I really liked.
Unfortunately, I discovered that the existing Android Apps for Firefly III are either outdated or very buggy and hardly maintained. Always wanting to use Flutter for something, I started to make my own app, modeling it after the Bluecoins app I used so far and whose interface I really liked.
214 changes: 192 additions & 22 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,36 +1,19 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dreautall.waterflyiii">
<application
android:label="Waterfly III"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
android:enableOnBackInvokedCallback="true">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.dreautall.waterflyiii">
<application android:label="Waterfly III" android:name="${applicationName}" android:icon="@mipmap/ic_launcher" android:enableOnBackInvokedCallback="true">
<activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<meta-data android:name="flutterEmbedding" android:value="2" />
</application>

<!-- Permissions -->
Expand All @@ -49,5 +32,192 @@
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
</intent>

<!-- App queries for some well-known financial apps for the notification listener -->
<package android:name="agency.sevenofnine.erstewallet.production"/>
<package android:name="air.app.scb.breeze.android.main.in.prod"/>
<package android:name="air.app.scb.breeze.android.main.sg.prod"/>
<package android:name="am.vtb.mobilebank"/>
<package android:name="au.com.up.money"/>
<package android:name="bank.discovery.banking.production.release"/>
<package android:name="br.com.bb.android"/>
<package android:name="br.com.digio"/>
<package android:name="by.alfabank.insync"/>
<package android:name="by.belinvestbank"/>
<package android:name="capitec.acuity.mobile.prod"/>
<package android:name="cl.android"/>
<package android:name="cl.bancochile.mi_banco"/>
<package android:name="cl.scotiabank.go"/>
<package android:name="co.com.lulobank.production"/>
<package android:name="co.infinum.hpb"/>
<package android:name="co.mona.android"/>
<package android:name="co.uk.getmondo"/>
<package android:name="com.abnamro.nl.mobile.payments"/>
<package android:name="com.aktia.wallet"/>
<package android:name="com.ally.cardcontrols"/>
<package android:name="com.ally.mobilebanking"/>
<package android:name="com.americanexpress.android.acctsvcs.it"/>
<package android:name="com.americanexpress.android.acctsvcs.us"/>
<package android:name="com.americanexpress.android.acctsvcs.us.experimental"/>
<package android:name="com.americanexpress.android.amex4you"/>
<package android:name="com.americanexpress.android.amexgo"/>
<package android:name="com.americanexpress.receiptmatch.activities"/>
<package android:name="com.apps4fuun.smssender"/>
<package android:name="com.axis.mobile"/>
<package android:name="com.b2winc.amedigital"/>
<package android:name="com.bankfab.pbg.ae.dubaifirst"/>
<package android:name="com.barclays.absa.banking"/>
<package android:name="com.barclays.android.barclaysmobilebanking"/>
<package android:name="com.barclays.bca"/>
<package android:name="com.bca"/>
<package android:name="com.bcadigital.blu"/>
<package android:name="com.bcp.bank.bcp"/>
<package android:name="com.binance.dev"/>
<package android:name="com.bnpp.hellobank"/>
<package android:name="com.boursorama.android.clients"/>
<package android:name="com.bpi.ng.mobilebanking"/>
<package android:name="com.chase.sig.android"/>
<package android:name="com.chinatrust.mobilebank"/>
<package android:name="com.citi.citimobile"/>
<package android:name="com.citibank.CitibankPH"/>
<package android:name="com.citibank.mobile.citiuaePAT"/>
<package android:name="com.coinbase.android"/>
<package android:name="com.commbank.netbank"/>
<package android:name="com.commercebank.mobile"/>
<package android:name="com.csam.icici.bank.imobile"/>
<package android:name="com.danskebank.weshare"/>
<package android:name="com.db.pbc.miabanca"/>
<package android:name="com.db.pwcc.dbmobile"/>
<package android:name="com.defi.wallet"/>
<package android:name="com.deserve.deserve"/>
<package android:name="com.dkbcodefactory.banking"/>
<package android:name="com.ehorizon.apollo.numobile"/>
<package android:name="com.esunbank.ESUNWALLET"/>
<package android:name="com.fineco.it"/>
<package android:name="com.firstbank.mbanklite"/>
<package android:name="com.ftband.koto"/>
<package android:name="com.ftband.mono"/>
<package android:name="com.fuib.android.spot.online"/>
<package android:name="com.giro"/>
<package android:name="com.globe.gcash.android"/>
<package android:name="com.golden1.card"/>
<package android:name="com.google.android.apps.messaging"/>
<package android:name="com.google.android.apps.nbu.paisa.user"/>
<package android:name="com.google.android.apps.playconsole"/>
<package android:name="com.google.android.apps.walletnfcrel"/>
<package android:name="com.google.android.gm"/>
<package android:name="com.grability.rappi"/>
<package android:name="com.grabtaxi.driver"/>
<package android:name="com.grabtaxi.passenger"/>
<package android:name="com.idamob.tinkoff.android"/>
<package android:name="com.ie.capitalone.uk"/>
<package android:name="com.illimity.mobile.rtl"/>
<package android:name="com.imaginecurve.curve.prd"/>
<package android:name="com.ing.asia.mobile"/>
<package android:name="com.ing.banking"/>
<package android:name="com.ing.mobile"/>
<package android:name="com.interbank.mobile"/>
<package android:name="com.konylabs.capitalone"/>
<package android:name="com.latuabancaperandroid"/>
<package android:name="com.loan.cash.credit.nanopay"/>
<package android:name="com.loan.cash.credit.nanopaymx"/>
<package android:name="com.lynxspa.bancopopolare"/>
<package android:name="com.marcus.android"/>
<package android:name="com.marcus.android.uk"/>
<package android:name="com.mashreq.NeoApp"/>
<package android:name="com.mercadolibre"/>
<package android:name="com.mercadopago.wallet"/>
<package android:name="com.microsoft.android.smsorganizer"/>
<package android:name="com.mtbank"/>
<package android:name="com.nequi.MobileApp"/>
<package android:name="com.nordea.mep.npay"/>
<package android:name="com.nu.production"/>
<package android:name="com.opentecheng.android.webank"/>
<package android:name="com.opentecheng.android.webank"/>
<package android:name="com.paypal.android.p2pmobile"/>
<package android:name="com.phonepe.app"/>
<package android:name="com.rappi.restaurants"/>
<package android:name="com.rbs.mobile.android.natwest"/>
<package android:name="com.rbs.mobile.android.rbs"/>
<package android:name="com.remitly.androidapp"/>
<package android:name="com.revolut.revolut"/>
<package android:name="com.rewire.app"/>
<package android:name="com.ripley.banco.peru"/>
<package android:name="com.samsung.android.email.provider"/>
<package android:name="com.samsung.android.samsungpay.gear"/>
<package android:name="com.samsung.android.spay"/>
<package android:name="com.santander.app"/>
<package android:name="com.satispay.customer"/>
<package android:name="com.sbg.mobile.phone"/>
<package android:name="com.sc.equities"/>
<package android:name="com.sc.privatebank.pvm"/>
<package android:name="com.scb.breezebanking.hk"/>
<package android:name="com.scb.breezebanking.zm"/>
<package android:name="com.scotiabank.banking"/>
<package android:name="com.sinopac.DaCard"/>
<package android:name="com.sinopac.DaCard"/>
<package android:name="com.sionpac.app.SinoPac"/>
<package android:name="com.softteco.bsbank"/>
<package android:name="com.starlingbank.android"/>
<package android:name="com.taxis99"/>
<package android:name="com.transferwise.android"/>
<package android:name="com.ukrsibbank.client.android"/>
<package android:name="com.unicredit"/>
<package android:name="com.vipera.chebanca"/>
<package android:name="com.vipera.ts.starter.MashreqAE"/>
<package android:name="com.whatsapp"/>
<package android:name="com.willmobile.mobilebank.fcb"/>
<package android:name="com.ykb.android"/>
<package android:name="com.zen.application"/>
<package android:name="consumer.cbsa.smartapp"/>
<package android:name="de.dkb.portalapp"/>
<package android:name="de.dwins.financeguru"/>
<package android:name="de.number26.android"/>
<package android:name="es.bancosantander.apps"/>
<package android:name="eu.netinfo.colpatria.system"/>
<package android:name="fi.danskebank.mobilepay"/>
<package android:name="fi.nordea.mep.p2p"/>
<package android:name="fi.nordea.mobilebank"/>
<package android:name="fi.op.android.lompsa"/>
<package android:name="fi.op.android.opmobiili"/>
<package android:name="fi.spankki"/>
<package android:name="fr.creditagricole.androidapp"/>
<package android:name="fr.max.android"/>
<package android:name="hr.asseco.android.jimba.sberbankrs"/>
<package android:name="hr.asseco.android.jimba.tutunskamk.production"/>
<package android:name="hr.asseco.android.zaba.new"/>
<package android:name="hr.binom.ecc.mobile"/>
<package android:name="hu.netbank.netbankdroid"/>
<package android:name="hu.otpbank.mobile"/>
<package android:name="it.bancomat.pay.user"/>
<package android:name="it.hype.app"/>
<package android:name="it.icbpi.mobile"/>
<package android:name="it.ingdirect.app"/>
<package android:name="it.nexi.yap"/>
<package android:name="md.maib.maibank"/>
<package android:name="mx.com.hsbc.controltotal"/>
<package android:name="net.easypark.android"/>
<package android:name="om.nu.production"/>
<package android:name="om.todo1.mobile"/>
<package android:name="org.ping.sberbank.elba.mobile"/>
<package android:name="org.toshi"/>
<package android:name="pe.com.interbank.mobilebanking"/>
<package android:name="pe.com.scotiabank.blpm.android.client"/>
<package android:name="pl.mbank"/>
<package android:name="ro.ing.mobile.banking.android.activity"/>
<package android:name="ru.abr"/>
<package android:name="ru.nspk.mirpay"/>
<package android:name="ru.sberbankmobile"/>
<package android:name="ru.vtb24.mobilebanking.android"/>
<package android:name="tw.com.hncb.sny"/>
<package android:name="ua.alfabank.mobile.android"/>
<package android:name="ua.aval.dbo.client.android"/>
<package android:name="ua.com.abank"/>
<package android:name="ua.izibank.app"/>
<package android:name="ua.oschadbank.online"/>
<package android:name="ua.privatbank.ap24"/>
<package android:name="uk.co.hsbc.hsbcukmobilebanking"/>
<package android:name="za.co.fnb.connect.itt"/>
<package android:name="za.co.nedbank"/>
</queries>
</manifest>
5 changes: 3 additions & 2 deletions lib/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@ import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:provider/provider.dart';
import 'package:provider/single_child_widget.dart';

import 'package:flutter_local_notifications/flutter_local_notifications.dart';

import 'package:waterflyiii/auth.dart';
import 'package:waterflyiii/notificationlistener.dart';
import 'package:waterflyiii/settings.dart';
import 'package:waterflyiii/pages/login.dart';
import 'package:waterflyiii/pages/navigation.dart';
import 'package:waterflyiii/pages/splash.dart';
import 'package:waterflyiii/pages/transaction_detail.dart';
import 'package:waterflyiii/settings.dart';

final GlobalKey<NavigatorState> navigatorKey =
GlobalKey<NavigatorState>(debugLabel: "Main Navigator");
Expand Down
6 changes: 5 additions & 1 deletion lib/auth.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ import 'dart:convert';
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';

import 'package:chopper/chopper.dart'
show Request, Response, StripStringExtension;
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:shared_preferences/shared_preferences.dart';

import 'package:waterflyiii/generated/swagger_fireflyiii_api/firefly_iii.swagger.dart';

Expand Down Expand Up @@ -177,6 +179,8 @@ class FireflyService with ChangeNotifier {
_signedIn = false;
_storageSignInException = null;
await storage.deleteAll();
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.clear();

debugPrint("notify FireflyService->signOut");
notifyListeners();
Expand Down
Loading

0 comments on commit d054f71

Please sign in to comment.