Merge branch 'main' into dev
This commit is contained in:
commit
66ebff38a5
8 changed files with 79 additions and 13 deletions
37
.gitea/ISSUE_TEMPLATE/bug.md
Normal file
37
.gitea/ISSUE_TEMPLATE/bug.md
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
---
|
||||||
|
name: 'Bug Report'
|
||||||
|
about: 'Use this when filing a bug report'
|
||||||
|
title: 'Bug title'
|
||||||
|
ref: 'main'
|
||||||
|
labels:
|
||||||
|
- 'Kind/Bug'
|
||||||
|
- 'Status/Need More Info'
|
||||||
|
---
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Answer the following questions to speed up the bug fixing process
|
||||||
|
-->
|
||||||
|
|
||||||
|
### Operating System + Version
|
||||||
|
<!-- for example "Android 13" -->
|
||||||
|
|
||||||
|
### App version
|
||||||
|
<!--
|
||||||
|
Can be found in the app by clicking
|
||||||
|
the three dots > 'About' or in app info in your device's setting
|
||||||
|
-->
|
||||||
|
|
||||||
|
### What was expected to happen
|
||||||
|
<!-- Enter what you thought SHOULD happen when the bug occured -->
|
||||||
|
|
||||||
|
### What actually happened
|
||||||
|
<!-- Here describe what ACTUALLY happened -->
|
||||||
|
|
||||||
|
### Steps to reproduce
|
||||||
|
<!--
|
||||||
|
Enter the exact steps that you made when you encountered the bug,
|
||||||
|
so we can reproduce it
|
||||||
|
-->
|
||||||
|
|
||||||
|
- [] I have checked the [list of issues](https://git.mnau.xyz/hernik/prasule/issues) and I'm sure this is not a duplicate
|
||||||
|
<!-- This is a checkbox, either check it after creating the issue or change [] to [X] -->
|
17
.gitea/ISSUE_TEMPLATE/feature.md
Normal file
17
.gitea/ISSUE_TEMPLATE/feature.md
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
---
|
||||||
|
name: 'Feature Request'
|
||||||
|
about: 'Request a new feature'
|
||||||
|
title: 'My awesome feature'
|
||||||
|
ref: 'main'
|
||||||
|
labels:
|
||||||
|
- 'Kind/Feature'
|
||||||
|
---
|
||||||
|
|
||||||
|
- [] I have checked the [list of issues](https://git.mnau.xyz/hernik/prasule/issues) and I'm sure this is not a duplicate
|
||||||
|
<!-- This is a checkbox, either check it after creating the issue or change [] to [X] -->
|
||||||
|
|
||||||
|
### Is your feature request related to a bug or an issue? If yes, describe it or link it
|
||||||
|
<!-- You can link issues by simply writing # followed by the ID of the issue or PR, for example #12 -->
|
||||||
|
|
||||||
|
### Describe your request, how you'd like it to be implemented etc.
|
||||||
|
<!-- This is the space for your requests to be made -->
|
|
@ -1,3 +1,5 @@
|
||||||
|
# 1.0.0-alpha+4
|
||||||
|
- Fix OCR downloads
|
||||||
# 1.0.0-alpha+3
|
# 1.0.0-alpha+3
|
||||||
- Add settings view for editing wallet categories
|
- Add settings view for editing wallet categories
|
||||||
- Change code according to more aggressive linting
|
- Change code according to more aggressive linting
|
||||||
|
|
5
CONTRIBUTING.md
Normal file
5
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Localization
|
||||||
|
|
||||||
|
[![Translation status](https://hosted.weblate.org/widget/prasule/287x66-grey.png)](https://hosted.weblate.org/engage/prasule/)
|
||||||
|
|
||||||
|
You can help with localization through Weblate, join the translation project on https://hosted.weblate.org/engage/prasule/
|
|
@ -1,8 +1,11 @@
|
||||||
# prasule
|
# prasule
|
||||||
[![Codemagic build status](https://api.codemagic.io/apps/64faee78aae8c48abc70dbc6/64faee78aae8c48abc70dbc5/status_badge.svg)](https://codemagic.io/apps/64faee78aae8c48abc70dbc6/64faee78aae8c48abc70dbc5/latest_build) [![Bug issue count](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fgit.mnau.xyz%2Fapi%2Fv1%2Frepos%2Fhernik%2Fprasule%2Fissues%3Flabels%3DKind%2FBug&query=%24.length&logo=forgejo&label=bug%20issues&color=red)](https://git.mnau.xyz/hernik/prasule/issues?q=&type=all&sort=&state=open&labels=144&milestone=0&project=0&assignee=0&poster=0) [![wakatime](https://wakatime.com/badge/user/17178fab-a33c-430f-a764-7b3f26c7b966/project/bf1f40b0-c8c0-4f72-8ad6-c861ecdcc90c.svg)](https://wakatime.com/badge/user/17178fab-a33c-430f-a764-7b3f26c7b966/project/bf1f40b0-c8c0-4f72-8ad6-c861ecdcc90c) [![Commit Style: Conventional Commits](https://img.shields.io/badge/commit%20style-conventional%20commits-pink)](https://www.conventionalcommits.org/en/v1.0.0/) [![Please don't upload to GitHub](https://nogithub.codeberg.page/badge.svg)](https://nogithub.codeberg.page)
|
[![Codemagic build status](https://api.codemagic.io/apps/64faee78aae8c48abc70dbc6/64faee78aae8c48abc70dbc5/status_badge.svg)](https://codemagic.io/apps/64faee78aae8c48abc70dbc6/64faee78aae8c48abc70dbc5/latest_build) [![Bug issue count](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fgit.mnau.xyz%2Fapi%2Fv1%2Frepos%2Fhernik%2Fprasule%2Fissues%3Flabels%3DKind%2FBug&query=%24.length&logo=forgejo&label=bug%20issues&color=red)](https://git.mnau.xyz/hernik/prasule/issues?q=&type=all&sort=&state=open&labels=144&milestone=0&project=0&assignee=0&poster=0) [![wakatime](https://wakatime.com/badge/user/17178fab-a33c-430f-a764-7b3f26c7b966/project/bf1f40b0-c8c0-4f72-8ad6-c861ecdcc90c.svg)](https://wakatime.com/badge/user/17178fab-a33c-430f-a764-7b3f26c7b966/project/bf1f40b0-c8c0-4f72-8ad6-c861ecdcc90c) [![Translation status](https://hosted.weblate.org/widget/prasule/svg-badge.svg)](https://hosted.weblate.org/engage/prasule/) [![Translation status](https://hosted.weblate.org/widget/prasule/svg-badge.svg)](https://hosted.weblate.org/engage/prasule/)
|
||||||
|
|
||||||
Expense manager
|
Expense manager
|
||||||
|
|
||||||
|
- [Apple Testflight](https://testflight.apple.com/join/C22pcnPc)
|
||||||
|
- [Google Play beta testing](https://play.google.com/store/apps/details?id=cafe.caras.prasule)
|
||||||
|
|
||||||
## License
|
## License
|
||||||
``` Prašule - simple, private & open-source expense tracker
|
``` Prašule - simple, private & open-source expense tracker
|
||||||
Copyright (C) 2023 Matyáš Caras
|
Copyright (C) 2023 Matyáš Caras
|
||||||
|
|
|
@ -11,21 +11,22 @@ class TessdataApi {
|
||||||
static final Dio _client = Dio(
|
static final Dio _client = Dio(
|
||||||
BaseOptions(
|
BaseOptions(
|
||||||
validateStatus: (status) => true,
|
validateStatus: (status) => true,
|
||||||
|
headers: {"User-Agent": "prasule/1.0.0"},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
/// Gets available languages from the repo
|
/// Gets available languages from the repo
|
||||||
static Future<List<String>> getAvailableData() async {
|
static Future<List<String>> getAvailableData() async {
|
||||||
final res = await _client.get<List<Map<String, dynamic>>>(
|
final res = await _client.get<List<dynamic>>(
|
||||||
"https://git.mnau.xyz/api/v1/repos/hernik/tessdata_fast/contents",
|
"https://git.mnau.xyz/api/v1/repos/hernik/tessdata_fast/contents",
|
||||||
options: Options(headers: {"Accept": "application/json"}),
|
options: Options(headers: {"Accept": "application/json"}),
|
||||||
);
|
);
|
||||||
if ((res.statusCode ?? 500) > 399) {
|
if ((res.statusCode ?? 500) > 399) {
|
||||||
return Future.error("The server returned status code ${res.statusCode}");
|
return Future.error("The server returned status code ${res.statusCode}");
|
||||||
}
|
}
|
||||||
final data = res.data;
|
final data = List<Map<String, dynamic>>.from(res.data ?? []);
|
||||||
final dataFiles = <String>[];
|
final dataFiles = <String>[];
|
||||||
for (final file in data ?? <Map<String, dynamic>>[]) {
|
for (final file in data) {
|
||||||
if (!(file["name"] as String).endsWith(".traineddata")) continue;
|
if (!(file["name"] as String).endsWith(".traineddata")) continue;
|
||||||
dataFiles.add((file["name"] as String).replaceAll(".traineddata", ""));
|
dataFiles.add((file["name"] as String).replaceAll(".traineddata", ""));
|
||||||
}
|
}
|
||||||
|
|
|
@ -501,12 +501,13 @@ class _HomeViewState extends State<HomeView> {
|
||||||
PlatformButton(
|
PlatformButton(
|
||||||
text: AppLocalizations.of(context).download,
|
text: AppLocalizations.of(context).download,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.of(context).push(
|
Navigator.of(context)
|
||||||
platformRoute(
|
.push(
|
||||||
(c) => const TessdataListView(),
|
platformRoute(
|
||||||
),
|
(c) => const TessdataListView(),
|
||||||
);
|
),
|
||||||
Navigator.of(c).pop();
|
)
|
||||||
|
.then((value) => Navigator.of(c).pop());
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
PlatformButton(
|
PlatformButton(
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
name: prasule
|
name: prasule
|
||||||
description: Open-source private expense tracker
|
description: Open-source private expense tracker
|
||||||
|
|
||||||
version: 1.0.0-alpha+3
|
version: 1.0.0-alpha+4
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=3.1.0-262.2.beta <4.0.0'
|
sdk: '>=3.1.0-262.2.beta <4.0.0'
|
||||||
|
@ -84,8 +84,8 @@ flutter:
|
||||||
# the material Icons class.
|
# the material Icons class.
|
||||||
uses-material-design: true
|
uses-material-design: true
|
||||||
assets:
|
assets:
|
||||||
- assets/
|
- assets/tessdata_config.json
|
||||||
- assets/tessdata/
|
- assets/tessdata/eng.traineddata
|
||||||
# To add assets to your application, add an assets section, like this:
|
# To add assets to your application, add an assets section, like this:
|
||||||
# assets:
|
# assets:
|
||||||
# - images/a_dot_burr.jpeg
|
# - images/a_dot_burr.jpeg
|
||||||
|
|
Loading…
Reference in a new issue