Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v0.2.0 #102

Merged
merged 95 commits into from
Apr 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
be9e89a
Release v0.1.0 (#34)
vilkris4 Sep 27, 2023
c52d807
Update libznn binaries to latest version (#35)
vilkris4 Sep 28, 2023
7ad88f5
Merge branch 'zenon_network/master' into develop-zenon-network
vilkris4 Oct 4, 2023
4f2d7ef
fix: _wcClient initialization
alienc0der Jul 20, 2023
94e3c5d
fix: check relay server connection
alienc0der Jul 21, 2023
d20c2bf
chore: update walletconnect_flutter_v2 to v2.0.15
alienc0der Jul 27, 2023
d4156a7
fix: onPairingDelete refresh pairingsBloc
alienc0der Jul 28, 2023
f5b5632
chore: update dependencies
alienc0der Jul 29, 2023
1f0db9c
chore: update dependencies
alienc0der Aug 2, 2023
e56b451
feat: updated WalletConnect integration
alienc0der Aug 4, 2023
ce75973
feat: added community public nodes
alienc0der Aug 5, 2023
a41970a
feat: added badge for notifications
alienc0der Aug 5, 2023
7ee32eb
refactor: resyncWallet and NodeManagement
alienc0der Aug 6, 2023
0496e01
feat: separated Plasma generation from sync
alienc0der Aug 6, 2023
3c9e63d
fix: fl_charts
alienc0der Aug 6, 2023
6ed4e15
fix: duplicate nodes in NodeManagement
alienc0der Aug 7, 2023
f7c932b
feat: open Syrius logs directory
alienc0der Aug 7, 2023
bb03bb3
chore: update dependencies
alienc0der Aug 8, 2023
80d507e
feat: switch auto-receiver on/off
alienc0der Aug 9, 2023
bbcad54
Create SECURITY.md
alienc0der Sep 12, 2023
1cad46f
feat: switch auto-receiver on/off
KingGorrin Jan 24, 2024
ec8ccfd
chore: remove WC_PROJECT_ID environment variable
alienc0der Nov 18, 2023
7a8582a
cicd: removed wallet-connect environment
alienc0der Nov 18, 2023
73bfe9c
Fix auto receiver
KingGorrin Jan 25, 2024
e12d942
Sync pubspec
KingGorrin Jan 25, 2024
8093216
Fix different green colors
KingGorrin Jan 25, 2024
abcb21c
Separate plasma from sync
KingGorrin Jan 25, 2024
52a90b3
Merge pull request #45 from zenon-network/feature/v0.0.7
alienc0der Jan 29, 2024
4c69444
Revert "Add alienc0der's v0.0.7 changes"
KingGorrin Jan 29, 2024
3a97d10
Merge pull request #54 from zenon-network/revert-45-feature/v0.0.7
KingGorrin Jan 29, 2024
9989882
Reword `Send Payment` to `Send`. (#56)
KingGorrin Jan 31, 2024
7b54f7f
Fix wrapping of revocation time (#53)
KingGorrin Feb 1, 2024
a77ae31
Fix FormatException when trying to fuse a large amount (#58)
KingGorrin Feb 2, 2024
781bc5f
Community public nodes (#49)
KingGorrin Feb 9, 2024
ab42af4
Update app_links and ignore incoming links on Linux (#55)
KingGorrin Feb 9, 2024
b07a103
Fix receive amount formatting and QrInputTooLongException (#59)
KingGorrin Feb 13, 2024
6864cd8
Update charts (#52)
KingGorrin Feb 14, 2024
949aaa0
Position address above amount (#62)
KingGorrin Feb 19, 2024
fa32051
Hardware wallet support for Ledger (#43)
KingGorrin Feb 26, 2024
4b1e18a
Delay Embedded Node until selected (#63)
KingGorrin Feb 26, 2024
0ae0f31
Disable autoreceive feature (#47)
KingGorrin Feb 26, 2024
b6ac68a
Reset words when verify incorrect seed (#66)
KingGorrin Feb 29, 2024
368afd9
Add auto-receive option on the onboard node-management screen (#65)
KingGorrin Feb 29, 2024
e60ef9d
Use CircularProgressIndicator for sync state
KingGorrin Mar 1, 2024
5f557b5
Update znn_sdk_dart ref
KingGorrin Mar 5, 2024
24fbfc8
Change AZ pillar owner filters (#68)
KingGorrin Mar 5, 2024
fd16d20
Load community nodes from assets (#69)
KingGorrin Mar 5, 2024
f8c21ff
Add manual test cases (#70)
KingGorrin Mar 5, 2024
3f70e1f
Update README
KingGorrin Mar 5, 2024
52871c5
Check for active sentinel
KingGorrin Mar 6, 2024
9e0a73b
Merge pull request #72 from zenon-network/bugfix/create-sentinel
alienc0der Mar 6, 2024
02ff179
Merge pull request #51 from zenon-network/feature/plasma-sync
alienc0der Mar 6, 2024
1b38649
chore(deps): bump archive from 3.3.7 to 3.3.8 (#73)
dependabot[bot] Mar 7, 2024
6ac9328
WalletConnect refactor (#48)
KingGorrin Mar 7, 2024
c722f30
Release wallet lock after use
KingGorrin Mar 8, 2024
b3c8932
Use finally to release wallet lock
KingGorrin Mar 8, 2024
585ac52
Restore WC_PROJECT_ID doc
KingGorrin Mar 8, 2024
550821a
Update ledger test
KingGorrin Mar 8, 2024
fb7d8d0
Add ledger test-run
KingGorrin Mar 8, 2024
70cfb06
Fix missing quotes
KingGorrin Mar 8, 2024
6e77048
Fix missing quotes
KingGorrin Mar 8, 2024
c875636
Fix running auto-receiver (#76)
KingGorrin Mar 9, 2024
ea98a05
Correct ledger test run
KingGorrin Mar 10, 2024
3fa8cfd
Correct walletconnect test
KingGorrin Mar 10, 2024
f436a51
Fix delete web3 cache (#78)
KingGorrin Mar 11, 2024
92e3309
Add auto-receive test run
KingGorrin Mar 11, 2024
e870906
Add community-nodes test run
KingGorrin Mar 11, 2024
a369f65
Remove unused import
KingGorrin Mar 11, 2024
febe6da
Allow znn or qsr az donations (#84)
KingGorrin Mar 13, 2024
b7b28d2
Restore connection on rejected chain identifier mismatch (#82)
KingGorrin Mar 13, 2024
ea5eaca
Rearrange settings widgets (#83)
KingGorrin Mar 13, 2024
3c848d5
Remove type step from pillar stepper (#88)
KingGorrin Mar 13, 2024
ba8e838
Use wallet name to identify ledger device (#89)
KingGorrin Mar 13, 2024
cb9a6c5
Remove double error notification (#93)
KingGorrin Mar 14, 2024
e8788a1
Add auto-receive test run
KingGorrin Mar 14, 2024
95e78e9
Merge branch 'release-0.2.0' of https://github.com/zenon-network/syri…
KingGorrin Mar 14, 2024
66d4b1e
Disconnect node on Wallet Reset (#94)
KingGorrin Mar 14, 2024
c96d847
Properly await all notifications (#95)
KingGorrin Mar 14, 2024
5d57b18
Add community-nodes test run
KingGorrin Mar 14, 2024
3aeccfa
Fix dashboard highlight overlap (#97)
KingGorrin Mar 15, 2024
dff6fb8
Update znn_ledger_dart ref
KingGorrin Mar 15, 2024
c21c991
Update QR child image (#98)
KingGorrin Mar 17, 2024
5bfa152
Fix error handling when generating new addresses (#100)
KingGorrin Mar 18, 2024
a409712
Refactor Sentinel stepper with Pillar impl. (#101)
KingGorrin Mar 18, 2024
e6935eb
Merge branch 'master' into release-0.2.0
KingGorrin Mar 19, 2024
9676212
Update ledger test run
KingGorrin Mar 20, 2024
d8c2b6c
Chore: upgrades and workflow fixes (#103)
KingGorrin Mar 24, 2024
c879e12
Add walletconnect test run
KingGorrin Mar 24, 2024
720f28d
Fix WalletConnect camera scanner (#104)
KingGorrin Mar 24, 2024
19aea04
Add walletconnect test run
KingGorrin Mar 25, 2024
a19a88a
Delete web3 cache by deactivating pairings (#107)
KingGorrin Mar 26, 2024
8d2eab4
Fix "shadows" on token cards (#109)
KingGorrin Mar 26, 2024
0735dbf
Apply sync check to all hosts (#112)
KingGorrin Mar 30, 2024
3cdd397
Refrase auto-receiver checkbox tooltip
KingGorrin Mar 30, 2024
7713cd4
Clean up unused AsyncMutex
KingGorrin Apr 1, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 44 additions & 27 deletions .github/workflows/syrius_builder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,28 @@ on:
workflow_dispatch:

env:
FLUTTER_VERSION: "3.10.x"
FLUTTER_VERSION: "3.19.x"

jobs:
build-macos:
env:
WALLET_CONNECT_PROJECT_ID: ${{ secrets.WC_PROJECT_ID }}
runs-on: macos-12
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Checkout zenon-node-database repository
uses: actions/checkout@v4
with:
repository: HyperCore-One/zenon-node-database
path: ./node-db
ref: main
- name: Copy community nodes
run: cp -r ./node-db/rpc-nodes-mainnet.json ./assets/community-nodes.json
- name: Setup environment
run: |
brew install unzip create-dmg
brew cleanup
- name: Checkout
uses: actions/checkout@v3
- name: Setup Flutter
uses: subosito/flutter-action@v2.10.0
uses: subosito/flutter-action@v2
with:
flutter-version: ${{env.FLUTTER_VERSION}}
channel: "stable"
Expand All @@ -35,7 +39,7 @@ jobs:
- name: Build syrius desktop
run: |
flutter config --enable-macos-desktop
flutter build macos --dart-define=WC_PROJECT_ID=$WALLET_CONNECT_PROJECT_ID --release
flutter build macos --release
- name: Package into DMG
run: |
create-dmg --volname syrius \
Expand All @@ -52,19 +56,26 @@ jobs:
--hdiutil-verbose syrius-alphanet-macos-universal.dmg build/macos/Build/Products/Release/s\ y\ r\ i\ u\ s.app \
syrius-alphanet-macos-universal.dmg build/macos/Build/Products/Release/s\ y\ r\ i\ u\ s.app
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: macos-artifacts
path: syrius-alphanet-macos-universal.dmg
build-windows:
env:
WALLET_CONNECT_PROJECT_ID: ${{ secrets.WC_PROJECT_ID }}
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Checkout zenon-node-database repository
uses: actions/checkout@v4
with:
repository: HyperCore-One/zenon-node-database
path: ./node-db
ref: main
- name: Copy community nodes
shell: pwsh
run: Copy-Item .\node-db\rpc-nodes-mainnet.json .\assets\community-nodes.json -Force
- name: Setup Flutter
uses: subosito/flutter-action@v2.10.0
uses: subosito/flutter-action@v2
with:
flutter-version: ${{env.FLUTTER_VERSION}}
channel: "stable"
Expand All @@ -73,28 +84,34 @@ jobs:
- name: Build syrius desktop
run: |
flutter config --enable-windows-desktop
flutter build windows --dart-define=WC_PROJECT_ID=$env:WALLET_CONNECT_PROJECT_ID --release
flutter build windows --release
- name: Package into zip
run: |
Compress-Archive -Path build\windows\runner\Release\* -DestinationPath .\syrius-alphanet-windows-amd64.zip
Compress-Archive -Path build\windows\x64\runner\Release\* -DestinationPath .\syrius-alphanet-windows-amd64.zip
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: windows-artifacts
path: syrius-alphanet-windows-amd64.zip
build-linux:
env:
WALLET_CONNECT_PROJECT_ID: ${{ secrets.WC_PROJECT_ID }}
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Checkout zenon-node-database repository
uses: actions/checkout@v4
with:
repository: HyperCore-One/zenon-node-database
path: ./node-db
ref: main
- name: Copy community nodes
run: cp -r ./node-db/rpc-nodes-mainnet.json assets/community-nodes.json
- name: Prepare environment
run: |
sudo apt update
sudo apt install -y curl clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev unzip xz-utils zip libnotify-dev libayatana-appindicator3-dev
- name: Setup Flutter
uses: subosito/flutter-action@v2.10.0
uses: subosito/flutter-action@v2
with:
flutter-version: ${{env.FLUTTER_VERSION}}
channel: "stable"
Expand All @@ -108,13 +125,13 @@ jobs:
- name: Build syrius desktop
run: |
flutter config --enable-linux-desktop
flutter build linux --dart-define=WC_PROJECT_ID=$WALLET_CONNECT_PROJECT_ID --release -v
flutter build linux --release -v
- name: Package zip
run: |
cd build/linux/x64/release/bundle
zip -r ../../../../../syrius-alphanet-linux-amd64.zip *
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: linux-artifacts
path: syrius-alphanet-linux-amd64.zip
Expand All @@ -124,7 +141,7 @@ jobs:
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set variables
run: |
echo "SYRIUS_VERSION=${{ github.ref }}" >> $GITHUB_ENV
Expand Down Expand Up @@ -152,15 +169,15 @@ jobs:
- name: Prepare releases directory
run: mkdir releases
- name: Download macOS artifacts
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: macos-artifacts
- name: Download Windows artifacts
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: windows-artifacts
- name: Download Linux artifacts
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: linux-artifacts
- name: Prepare releases
Expand All @@ -174,7 +191,7 @@ jobs:
echo $(sha256sum *)
echo $(sha256sum *) >> SHA256CHECKSUMS.txt
- name: Upload files to a GitHub release
uses: svenstaro/upload-release-action@2.4.1
uses: svenstaro/upload-release-action@2.9.0
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
release_name: ${{ env.SYRIUS_VERSION }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/syrius_lib_updater.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ jobs:
sudo apt update
sudo apt install -y unzip
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Download libznn
uses: robinraju/release-downloader@v1.6
uses: robinraju/release-downloader@v1.9
with:
repository: "zenon-network/go-zenon"
latest: true
Expand Down
21 changes: 12 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

[![Build and release syrius](https://github.com/zenon-network/syrius/actions/workflows/syrius_builder.yml/badge.svg?branch=develop)](https://github.com/zenon-network/syrius/actions/workflows/syrius_builder.yml) [![Library updater for syrius](https://github.com/zenon-network/syrius/actions/workflows/syrius_lib_updater.yml/badge.svg?branch=develop)](https://github.com/zenon-network/syrius/actions/workflows/syrius_lib_updater.yml)

Cross-platform non-custodial wallet designed for Alphanet - Network of Momentum Phase 0.
Cross-platform non-custodial wallet designed for Alphanet - Network of Momentum Phase 1.

Developed in Flutter using the [Zenon Dart SDK](https://github.com/zenon-network/znn_sdk_dart), `s y r i u s` wallet provides a simple and intuitive interface to interact with Network of Momentum Phase 0.
Developed in Flutter using the [Zenon Dart SDK](https://github.com/zenon-network/znn_sdk_dart) and [Ledger Wallet for Zenon Dart SDK](https://github.com/hypercore-one/znn_ledger_dart), `s y r i u s` wallet provides a simple and intuitive interface to interact with Network of Momentum Phase 1.

## Architecture

Expand All @@ -18,24 +18,27 @@ The wallet has a modular design with native full node integration. There are thr

Follow the instructions to install the [Flutter SDK](https://docs.flutter.dev/get-started/install). Check the [documentation](https://docs.flutter.dev/desktop) in order to setup the Flutter desktop environment.

Learn about the foreign function interface (ffi) [here](https://docs.flutter.dev/development/platform-integration/c-interop) that enables state-of-the art KDF - [Argon2](https://github.com/zenon-network/argon2_ffi), feeless transactions - [PoW links](https://github.com/zenon-network/znn-pow-links-cpp) and native full node integration - [Embedded Node](https://github.com/zenon-network/go-zenon).
Learn about the foreign function interface (ffi) [here](https://docs.flutter.dev/development/platform-integration/c-interop) that enables state-of-the art KDF - [Argon2](https://github.com/zenon-network/argon2_ffi), feeless transactions - [PoW links](https://github.com/zenon-network/znn-pow-links-cpp), native full node integration - [Embedded Node](https://github.com/zenon-network/go-zenon) and communication library between Ledger devices - [Ledger](https://github.com/zenon-network/ledger_ffi_rs).

Dependencies:

- Flutter: `>=2.10.x`
- Dart: `>=2.16.x`
- Flutter: `>=3.19.x`
- Dart: `>=3.3.x`

Currently supported `<os>`: `windows`, `macos`, `linux`

The [WalletConnect](https://github.com/WalletConnect) integration requires setting the `WC_PROJECT_ID` environmental variable.

```bash
git clone https://github.com/zenon-network/syrius.git
flutter pub get
flutter run --dart-define=WC_PROJECT_ID=walletconnect_project_id -d <os>
flutter build --dart-define=WC_PROJECT_ID=walletconnect_project_id <os>
flutter run -d <os>
flutter build <os>
```

## Linux

Note that on Linux you will need to install an udev rule file with your application for unprivileged users to be able to access HID devices with hidapi.
Refer to the [README](udev/) file in the udev directory for an example.

## Contributing

Please check [CONTRIBUTING](./CONTRIBUTING.md) for more details.
Expand Down
1 change: 1 addition & 0 deletions assets/community-nodes.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[]
Binary file modified assets/images/qr_code_child_image_znn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions assets/lottie/ic_anim_plasma_generation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"v":"5.7.1","fr":30,"ip":0,"op":80,"w":500,"h":500,"nm":"Plasma generation","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"thunder Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[95.758,-41.79],[21.469,-41.79],[22.96,-175.92],[-95.757,41.789],[-21.469,41.789],[-22.96,175.92]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":10,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"t":43,"s":[0]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.31,0.82,0.4],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[250,250],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"thunder Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[95.758,-41.79],[21.469,-41.79],[22.96,-175.92],[-95.757,41.789],[-21.469,41.789],[-22.96,175.92]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":10,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"st","c":{"a":0,"k":[0.702,0.702,0.702],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[250,250],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"thunder_2 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":34,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":41,"s":[60]},{"t":49,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[95.758,-41.79],[21.469,-41.79],[22.96,-175.92],[-95.757,41.789],[-21.469,41.789],[-22.96,175.92]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.31,0.82,0.4],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[250,250],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":10,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false}],"ip":32,"op":322,"st":22,"bm":0}],"markers":[]}
31 changes: 27 additions & 4 deletions lib/blocs/accelerator/project_list_bloc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ class ProjectListBloc with RefreshBlocMixin {
Future<Set<Project>> _filterProjectsByTags(List<Project> projects) async {
if (selectedProjectsFilterTag.isNotEmpty) {
Iterable<Hash>? votedProjectIds;
Iterable<Hash>? votedPhaseIds;
Iterable<Project> filteredProjects = projects;
if (selectedProjectsFilterTag.contains(AccProjectsFilterTag.myProjects)) {
filteredProjects = filteredProjects.where(
Expand All @@ -219,19 +220,29 @@ class ProjectListBloc with RefreshBlocMixin {
(project) => project.status == AcceleratorProjectStatus.active);
}
if (selectedProjectsFilterTag
.contains(AccProjectsFilterTag.votingOpened)) {
.contains(AccProjectsFilterTag.needsVoting)) {
votedProjectIds ??= await _getVotedProjectIdsByPillar(filteredProjects);
votedPhaseIds ??= await _getVotedPhaseIdsByPillar(filteredProjects);
filteredProjects = filteredProjects.where(
(project) =>
project.status == AcceleratorProjectStatus.voting &&
!votedProjectIds!.contains(project.id),
(project.status == AcceleratorProjectStatus.voting &&
!votedProjectIds!.contains(project.id)) ||
project.phases.any((phase) =>
phase.status == AcceleratorProjectStatus.voting &&
!votedPhaseIds!.contains(phase.id)),
);
}
if (selectedProjectsFilterTag
.contains(AccProjectsFilterTag.alreadyVoted)) {
votedProjectIds ??= await _getVotedProjectIdsByPillar(filteredProjects);
votedPhaseIds ??= await _getVotedPhaseIdsByPillar(filteredProjects);
filteredProjects = filteredProjects.where(
(project) => votedProjectIds!.contains(project.id),
(project) =>
(project.status == AcceleratorProjectStatus.voting &&
votedProjectIds!.contains(project.id)) ||
project.phases.any((phase) =>
phase.status == AcceleratorProjectStatus.voting &&
votedPhaseIds!.contains(phase.id)),
);
}
return filteredProjects.toSet();
Expand All @@ -248,4 +259,16 @@ class ProjectListBloc with RefreshBlocMixin {
);
return pillarVotes.where((e) => e != null).map((e) => e!.id);
}

Future<Iterable<Hash>> _getVotedPhaseIdsByPillar(
Iterable<Project> projects) async {
var pillarVotes = await zenon!.embedded.accelerator.getPillarVotes(
pillarInfo!.name,
projects
.expand((project) => project.phaseIds)
.map((id) => id.toString())
.toList(),
);
return pillarVotes.where((e) => e != null).map((e) => e!.id);
}
}
Loading