Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
dc1e096
chore(dependencies): update package versions and improve UI components
dhakar66 Jun 27, 2026
dd708e8
feat(session_selection): add MantraSessionSelection and integrate int…
dhakar66 Jun 27, 2026
c7286db
Merge branch 'develop' into feat/NewRoutine
dhakar66 Jun 27, 2026
70986e2
chore(dependencies): update firebase_messaging and refactor screens
dhakar66 Jun 27, 2026
2af0d13
feat(localization): integrate localization into SelectSessionScreen
dhakar66 Jun 27, 2026
352d70f
feat(ci): auto-bump app version on prod release from commits/branches
ta4tsering Jun 27, 2026
bff2b55
chore: add caretLeft icon to AppAssets; refactor PlanNavigationBotto…
dhakar66 Jun 29, 2026
627e3e8
refactor(plan_text_screen): enhance theme management for improved UI …
dhakar66 Jun 29, 2026
7349916
feat(bookmarks): implement bookmark toggle functionality across vario…
tentamdin Jun 29, 2026
242e52a
feat: add useRootNavigator option to LoginDrawer and update MoreScree…
dhakar66 Jun 29, 2026
a7f9e60
feat(bookmarks): enhance bookmark functionality with caching and pref…
tentamdin Jun 29, 2026
8a87695
fix
TenzDelek Jun 29, 2026
b7aa9c6
refactor(bookmarks): update toggle methods to return success status
tentamdin Jun 29, 2026
92c0697
feat(practice): integrate guest login handling in bookmarks navigation
tentamdin Jun 29, 2026
7ff3955
fix
TenzDelek Jun 29, 2026
94f6737
fallback
TenzDelek Jun 29, 2026
9bee14b
Merge remote-tracking branch 'origin/main' into feat/ci-auto-version-…
Pechabot Jun 29, 2026
e8db71f
feat(ci): preview version on dev releases + harden bump logic
Pechabot Jun 29, 2026
4525216
-1
TenzDelek Jun 29, 2026
53ef3cb
delete color
TenzDelek Jun 29, 2026
20f40c2
delete color fix
TenzDelek Jun 29, 2026
8a4586a
fix(routine_management): update routine item handling and improve UI …
tentamdin Jun 29, 2026
4252d3b
refactor(routine_api_models): enhance session handling and cover imag…
tentamdin Jun 29, 2026
45f6282
Merge pull request #442 from OpenPecha/feat/NewRoutine
tentamdin Jun 29, 2026
914543f
feat: integrate authentication state management and enhance deep link…
dhakar66 Jun 29, 2026
777e90b
Merge pull request #454 from OpenPecha/chore/NextSubtaskButton
tentamdin Jun 29, 2026
1507e67
Merge pull request #455 from OpenPecha/chore/CoverNavbar
tentamdin Jun 29, 2026
3244d08
Merge pull request #456 from OpenPecha/feat/bookmark-toggle-state
tentamdin Jun 29, 2026
cce65f0
streak share
TenzDelek Jun 29, 2026
f07f75f
fix
TenzDelek Jun 29, 2026
053406c
group
TenzDelek Jun 29, 2026
0fedca8
Merge pull request #461 from OpenPecha/feat/deeplinkshare
tentamdin Jun 29, 2026
9d9d454
Merge pull request #457 from OpenPecha/calaenddr-fix
tentamdin Jun 29, 2026
26f0faf
Merge pull request #460 from OpenPecha/feat/ci-auto-version-bump
tentamdin Jun 29, 2026
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
5 changes: 4 additions & 1 deletion .github/workflows/build-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ on:
play_track: { required: false, type: string, default: internal }
environment: { required: false, type: string, default: '' }
upload_to_store: { required: false, type: boolean, default: true }
version_name: { required: false, type: string, default: '' } # CI-computed semver; falls back to pubspec when empty

permissions:
contents: read
Expand Down Expand Up @@ -88,7 +89,9 @@ jobs:
CM_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
CM_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
run: |
VERSION_NAME=$(grep '^version:' pubspec.yaml | sed 's/version: //' | cut -d'+' -f1)
# Prefer the CI-computed version (release-prod), else fall back to pubspec.
VERSION_NAME="${{ inputs.version_name }}"
[ -z "$VERSION_NAME" ] && VERSION_NAME=$(grep '^version:' pubspec.yaml | sed 's/version: //' | cut -d'+' -f1)
OFFSET="${{ vars.BUILD_NUMBER_OFFSET || '100' }}"
BUILD_NUMBER=$(( ${{ github.run_number }} + OFFSET ))
echo "Building $VERSION_NAME (+$BUILD_NUMBER)"
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/build-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ on:
ios_bundle_id: { required: true, type: string } # org.pecha.app[.dev]
environment: { required: false, type: string, default: '' }
upload_to_store: { required: false, type: boolean, default: true }
version_name: { required: false, type: string, default: '' } # CI-computed semver; falls back to pubspec when empty

permissions:
contents: read
Expand Down Expand Up @@ -176,7 +177,9 @@ jobs:
env:
AIRBRIDGE_SDK_TOKEN: ${{ secrets.AIRBRIDGE_SDK_TOKEN }}
run: |
VERSION_NAME=$(grep '^version:' pubspec.yaml | sed 's/version: //' | cut -d'+' -f1)
# Prefer the CI-computed version (release-prod), else fall back to pubspec.
VERSION_NAME="${{ inputs.version_name }}"
[ -z "$VERSION_NAME" ] && VERSION_NAME=$(grep '^version:' pubspec.yaml | sed 's/version: //' | cut -d'+' -f1)
OFFSET="${{ vars.BUILD_NUMBER_OFFSET || '100' }}"
BUILD_NUMBER=$(( ${{ github.run_number }} + OFFSET ))
echo "Building $VERSION_NAME (+$BUILD_NUMBER)"
Expand Down
23 changes: 23 additions & 0 deletions .github/workflows/release-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,27 @@ permissions:
contents: read

jobs:
# Compute a PREVIEW of the next version (same rules as prod) so the dev /
# TestFlight build carries the version you're about to ship — but do NOT commit
# it. The version is only persisted on the prod release (main), so promoting
# develop -> main bumps exactly once (no double bump). See CONTRIBUTING.md.
version:
name: 🔖 Preview version
runs-on: ubuntu-latest
outputs:
version_name: ${{ steps.bump.outputs.version_name }}
steps:
- name: 📂 Checkout (full history + tags)
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: 🔢 Compute next version (preview only — not committed)
id: bump
run: bash ci/scripts/bump_version.sh

android:
needs: version
uses: ./.github/workflows/build-android.yml
with:
flavor: dev
Expand All @@ -25,9 +45,11 @@ jobs:
play_track: internal
environment: development
upload_to_store: true
version_name: ${{ needs.version.outputs.version_name }}
secrets: inherit

ios:
needs: version
uses: ./.github/workflows/build-ios.yml
with:
flavor: dev
Expand All @@ -37,4 +59,5 @@ jobs:
ios_bundle_id: org.pecha.app.dev
environment: development
upload_to_store: true
version_name: ${{ needs.version.outputs.version_name }}
secrets: inherit
49 changes: 44 additions & 5 deletions .github/workflows/release-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,43 @@ permissions:
contents: write # needed to create the GitHub Release + tag

jobs:
# Decide the next semantic version from the commits / branch names landed
# since the last release tag (Conventional Commits, PATCH fallback), write it
# to pubspec.yaml and commit it back. Both store builds and the in-app
# settings page read the version from pubspec via --build-name, so this single
# bump keeps all three in sync. See CONTRIBUTING.md for the conventions.
version:
name: 🔖 Bump version
runs-on: ubuntu-latest
permissions:
contents: write
outputs:
version_name: ${{ steps.bump.outputs.version_name }}
steps:
- name: 📂 Checkout (full history + tags)
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}

- name: 🔢 Compute & apply version bump
id: bump
run: bash ci/scripts/bump_version.sh

- name: ⬆️ Commit bumped pubspec.yaml
run: |
if git diff --quiet -- pubspec.yaml; then
echo "pubspec.yaml unchanged — nothing to commit."; exit 0
fi
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add pubspec.yaml
# [skip ci] so this bump commit does not re-trigger the release.
git commit -m "chore(release): bump version to ${{ steps.bump.outputs.version_name }} [skip ci]"
git push origin HEAD:${{ github.ref_name }}

android:
needs: version
uses: ./.github/workflows/build-android.yml
with:
flavor: prod
Expand All @@ -26,9 +62,11 @@ jobs:
play_track: internal # bump to "production" when ready to ship live
environment: production
upload_to_store: true
version_name: ${{ needs.version.outputs.version_name }}
secrets: inherit

ios:
needs: version
uses: ./.github/workflows/build-ios.yml
with:
flavor: prod
Expand All @@ -38,23 +76,24 @@ jobs:
ios_bundle_id: org.pecha.app
environment: production
upload_to_store: true
version_name: ${{ needs.version.outputs.version_name }}
secrets: inherit

github_release:
name: 📦 GitHub Release
needs: [ android, ios ]
needs: [ version, android, ios ]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: 📂 Checkout
- name: 📂 Checkout (post-bump main)
uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }} # tag the commit that carries the bumped version

- name: 🏷️ Compute tag
id: ver
run: |
V=$(grep '^version:' pubspec.yaml | sed 's/version: //' | cut -d'+' -f1)
echo "tag=v$V-build-${{ github.run_number }}" >> "$GITHUB_OUTPUT"
run: echo "tag=v${{ needs.version.outputs.version_name }}-build-${{ github.run_number }}" >> "$GITHUB_OUTPUT"

- name: ⬇️ Download build artifacts
uses: actions/download-artifact@v4
Expand Down
19 changes: 19 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Contributing

## Versioning (automatic — don't edit the version by hand)

CI bumps the app version from your **commit messages** / **branch names**:

| Bump | Commit starts with | or branch named |
| --- | --- | --- |
| **major** (`3.0.0`) | `feat!:` · `fix!:` · a `BREAKING CHANGE:` footer | `breaking/…` · `major/…` |
| **minor** (`2.10.0`) | `feat:` | `feat/…` · `feature/…` |
| **patch** (`2.9.3`) | anything else (`fix:`, `chore:`, …) | anything else |

**No convention → patch.** That's the only rule you need.

### Dev vs prod
- Merge to **`develop`** → the dev TestFlight build *previews* the next version (not saved).
- Merge to **`main`** → the version is bumped for real, shipped, and tagged.

So a change tested on dev and then shipped to prod bumps **once**, never twice.
Binary file added assets/images/buddha.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
105 changes: 105 additions & 0 deletions ci/scripts/bump_version.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
#!/usr/bin/env bash
# ---------------------------------------------------------------------------
# Auto-bumps the semantic version (the "X.Y.Z" version name) in pubspec.yaml
# based on the Conventional Commits / branch names landed since the last
# release tag. Falls back to a PATCH bump when no convention is detected.
#
# major (X+1.0.0) : a commit "<type>!:" or a "BREAKING CHANGE" footer,
# or a branch named breaking/* or major/*
# minor (X.Y+1.0) : a "feat:"/"feat(scope):" commit,
# or a branch named feat/* or feature/*
# patch (X.Y.Z+1) : anything else (fix, chore, docs, refactor, …) and the
# fallback when no convention is present at all
#
# The "+build" metadata is preserved as-is — CI sets the real, monotonic build
# number at build time (github.run_number + offset), so pubspec's build value
# is only a placeholder.
#
# The script only computes + writes pubspec.yaml; the CALLER decides whether to
# persist it:
# * release-prod (main) commits the bump back -> the version advances.
# * release-dev (develop) does NOT commit -> a throwaway preview build,
# so promoting dev->prod does
# not double-bump.
#
# Outputs (when $GITHUB_OUTPUT is set, i.e. on CI):
# version_name=<new X.Y.Z> level=<major|minor|patch> version=<X.Y.Z+build>
# ---------------------------------------------------------------------------
set -euo pipefail

PUBSPEC="${PUBSPEC_PATH:-pubspec.yaml}"

# --- current version -------------------------------------------------------
current_line="$(grep -E '^version:' "$PUBSPEC" | head -n1)"
current="${current_line#version:}"
current="${current// /}" # strip spaces -> "X.Y.Z+build"
name="${current%%+*}" # "X.Y.Z"
build=""
[ "$current" != "$name" ] && build="${current#*+}" # "build" (empty if no +)

# --- version to bump FROM --------------------------------------------------
# The higher of pubspec's version and the highest released "v*" tag. On main
# they are equal. For DEV builds the bump is NOT committed back, so develop's
# pubspec can lag the last prod release — using the tag keeps dev one step ahead
# of what already shipped instead of re-previewing an already-released version.
tag_ver="$(git tag -l 'v*' 2>/dev/null | sed -E 's/^v//; s/-.*$//' \
| grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | sort -t. -k1,1n -k2,2n -k3,3n | tail -n1 || true)"
base="$name"
[ -n "$tag_ver" ] && base="$(printf '%s\n%s\n' "$name" "$tag_ver" \
| sort -t. -k1,1n -k2,2n -k3,3n | tail -n1)"

IFS='.' read -r major minor patch <<<"$base"
: "${major:=0}" "${minor:=0}" "${patch:=0}"

# --- commit range whose messages decide the bump LEVEL (since last release) -
last_tag="$(git describe --tags --abbrev=0 --match 'v*' 2>/dev/null || true)"
if [ -n "$last_tag" ]; then
range="${last_tag}..HEAD"
else
range="HEAD" # no tags yet: inspect all history
fi

subjects="$(git log --format='%s' "$range" 2>/dev/null || true)"
bodies="$(git log --format='%b' "$range" 2>/dev/null || true)"
# Branch name behind each merge commit, e.g. "Merge pull request #1 from org/feat/x" -> "feat/x"
branches="$(git log --merges --format='%s' "$range" 2>/dev/null | sed -nE 's/.*from [^/]+\/(.+)$/\1/p' || true)"

# --- decide the bump level (highest wins) ----------------------------------
level="patch"

if printf '%s\n' "$subjects" | grep -qiE '^[[:space:]]*(feat|feature)(\([^)]+\))?!?:' \
|| printf '%s\n' "$branches" | grep -qiE '^(feat|feature)/'; then
level="minor"
fi

if printf '%s\n' "$subjects" | grep -qE '^[[:space:]]*[a-z]+(\([^)]+\))?!:' \
|| printf '%s\n' "$bodies" | grep -qE '^[[:space:]]*BREAKING[ -]CHANGE:' \
|| printf '%s\n' "$branches" | grep -qiE '^(breaking|major)/'; then
level="major"
fi

case "$level" in
major) major=$((major + 1)); minor=0; patch=0 ;;
minor) minor=$((minor + 1)); patch=0 ;;
patch) patch=$((patch + 1)) ;;
esac

new_name="${major}.${minor}.${patch}"
new_version="$new_name"
[ -n "$build" ] && new_version="${new_name}+${build}"

# --- rewrite the top-level version line in pubspec.yaml --------------------
NEW_VERSION="$new_version" perl -i -pe 'if (!$done && /^version:/) { $_ = "version: $ENV{NEW_VERSION}\n"; $done = 1 }' "$PUBSPEC"

echo "Last release tag : ${last_tag:-<none>}"
echo "Base version : $base (pubspec=$name, highest tag=${tag_ver:-<none>})"
echo "Bump level : $level"
echo "New version : $new_version"

if [ -n "${GITHUB_OUTPUT:-}" ]; then
{
echo "version_name=$new_name"
echo "version=$new_version"
echo "level=$level"
} >>"$GITHUB_OUTPUT"
fi
54 changes: 27 additions & 27 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -365,18 +365,18 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
airbridge-ios-sdk: 6049688ddcfafa85da5ab35b943430c3309ca97b
airbridge_flutter_sdk: 79d47074aae010182e265e9bdac9c904d9a01f4d
app_links: 585674be3c6661708e6cd794ab4f39fb9d8356f9
audio_service: cab6c1a0eaf01b5a35b567e11fa67d3cc1956910
audio_session: 19e9480dbdd4e5f6c4543826b2e8b0e4ab6145fe
airbridge_flutter_sdk: 31632f81cacf04d55acc4e6ef17f536e389a8d0c
app_links: 3dbc685f76b1693c66a6d9dd1e9ab6f73d97dc0a
audio_service: aa99a6ba2ae7565996015322b0bb024e1d25c6fd
audio_session: 9bb7f6c970f21241b19f5a3658097ae459681ba0
Auth0: 2876d0c36857422eda9cb580a6cc896c7d14cb36
auth0_flutter: 0f4846524696ef8441bcb96ceab7bfdbe31b8a05
connectivity_plus: 2a701ffec2c0ae28a48cf7540e279787e77c447d
auth0_flutter: 031042ca6cf84f1b21611062b33ea7ec4bf3bc52
connectivity_plus: cb623214f4e1f6ef8fe7403d580fdad517d2f7dd
Firebase: a8539b633d474fbeb654c7043f9c1649e274045b
firebase_analytics: 444603cf97c21326b60115cd18d28f4a56bd78f6
firebase_core: 2f51bd38a4e012634cf229f81dc9e2506df32f1c
firebase_crashlytics: 251d4c57b75af742297bb7a39d50b40b9caf88cc
firebase_messaging: c8d9730ad2cf85f50f1e16be82ffebcb9a20a792
firebase_analytics: 5e356f558625ce2d8b21deff00946b56d6e8d0d5
firebase_core: fc23178af8ea070194d09031ae4198a9608a3d22
firebase_crashlytics: 344bb168f55aee1086c6cdd0b105a9db018cd344
firebase_messaging: 870b2939a7f7cc52bc38ca0250127c45b42f4bad
FirebaseAnalytics: 9c9fa7915fc52ea03077000d5a7b6a8947b2d76e
FirebaseCore: 2e86a4ea1684d4381707069e4a6d89ac808e901e
FirebaseCoreExtension: 10d2a627977b39418759ad88ada80fbbd34f1c4f
Expand All @@ -387,38 +387,38 @@ SPEC CHECKSUMS:
FirebaseRemoteConfigInterop: 7e3d57ce4b1e958bb1d15403faa7178f46bbb5b7
FirebaseSessions: acfe7eadca47cda94ac86592737204581bb1abf6
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e
flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
flutter_local_notifications: ff50f8405aaa0ccdc7dcfb9022ca192e8ad9688f
flutter_secure_storage_darwin: 557817588b80e60213cbecb573c45c76b788018d
flutter_timezone: ac3da59ac941ff1c98a2e1f0293420e020120282
flutter_image_compress_common: 1697a328fd72bfb335507c6bca1a65fa5ad87df1
flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99
flutter_local_notifications: a5a732f069baa862e728d839dd2ebb904737effb
flutter_secure_storage_darwin: acdb3f316ed05a3e68f856e0353b133eec373a23
flutter_timezone: 7c838e17ffd4645d261e87037e5bebf6d38fe544
GoogleAdsOnDeviceConversion: 80ce443fa1b4b5750913d53a04ecda644ff57744
GoogleAppMeasurement: a6d37949071d456e9147dac6789c4342e0e7a8c5
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
GoogleUtilities: 4f2618a4a1e762a1ee134a1e2323bba9843e06da
image_gallery_saver_plus: 782ade975fe6a4600b53e7c1983e3a2979d1e9e5
image_picker_ios: 4f2f91b01abdb52842a8e277617df877e40f905b
just_audio: a42c63806f16995daf5b219ae1d679deb76e6a79
image_gallery_saver_plus: e597bf65a7846979417a3eae0763b71b6dfec6c3
image_picker_ios: e0ece4aa2a75771a7de3fa735d26d90817041326
just_audio: 4e391f57b79cad2b0674030a00453ca5ce817eed
JWTDecode: 7dae24cb9bf9b608eae61e5081029ec169bb5527
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
path_provider_foundation: 0b743cbb62d8e47eab856f09262bb8c1ddcfe6ba
permission_handler_apple: ee2fe0fd04551b304eb002714ff067c371c822ed
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
path_provider_foundation: bb55f6dbba17d0dccd6737fe6f7f34fbd0376880
permission_handler_apple: 92d754bbaa7361d436db2d6c3c1c2a0fdcec462e
PostHog: 82eee1ba92efc8144b06b6e4412abba5438c8fda
posthog_flutter: 70c295afe8f9eb52e99eefe031af0001bdf9b735
posthog_flutter: 343db84a70d44b12fa0fe2fc35bbb58098074bd4
PromisesObjC: 752c3227f599e3467650e47ea36f433eeb10c273
PromisesSwift: 217dea0fd5d2ad65222a109c48698add13cc1c5b
SDWebImage: e9fc87c1aab89a8ab1bbd74eba378c6f53be8abf
SDWebImageWebPCoder: 0e06e365080397465cc73a7a9b472d8a3bd0f377
share_plus: 8b6f8b3447e494cca5317c8c3073de39b3600d1f
shared_preferences_foundation: 5086985c1d43c5ba4d5e69a4e8083a389e2909e6
share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb
SimpleKeychain: 768cf43ae778b1c21816e94dddf01bb8ee96a075
sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d
url_launcher_ios: bb13df5870e8c4234ca12609d04010a21be43dfa
webview_flutter_wkwebview: 29eb20d43355b48fe7d07113835b9128f84e3af4
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b
webview_flutter_wkwebview: 8ebf4fded22593026f7dbff1fbff31ea98573c8d

PODFILE CHECKSUM: d93c32cc7d677c987ce520e85932c4ff335f3ec2

Expand Down
1 change: 1 addition & 0 deletions lib/core/config/router/app_router.dart
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ final appRouterProvider = Provider<GoRouter>((ref) {
GoRoute(
path: "group/:groupId",
name: "home-group-profile",
parentNavigatorKey: rootNavigatorKey,
builder: (context, state) {
final groupId = state.pathParameters['groupId'] ?? '';
return GroupProfileScreen(groupId: groupId);
Expand Down
Loading
Loading