Conversation
Changes:
- Removed the follow/join button.
- Removed the Practice tab and its series list UI.
- Removed the tab bar entirely; the long “about” content now
renders directly when present.
- Moved the social/link row above the short description.
- Kept SeriesInfoScreen group row navigation as full-screen /
home/group/:groupId.
- Kept markdown drawer://group/... opening the bottom drawer.
What changed:
- Added snap points so the drawer settles cleanly at
collapsed, default, and expanded heights.
- Raised the default open height from 75% to 82%.
- Increased max height to 96%.
- Made the drag handle area larger and easier to grab.
- Switched the drawer’s inner scroll physics to clamping so
vertical gestures hand off to the sheet more predictably.
- Kept the full-screen group profile scroll behavior
unchanged.
# Conflicts: # android/app/src/main/AndroidManifest.xml # lib/main.dart # pubspec.lock # pubspec.yaml
… and increment package versions
…/Flutter-Pecha into feat/airbridgeDeepLink
…rate segment info retrieval.
…timezone handling
…ns and remove deprecated intent filters
…gement during navigation in ReaderScreen. the reason to change is when i tried to open a segmeent using applink deeplink, and then open get-app airbridge link it was breaking.
Chore/source page update
Feat/airbridge deep link
feat: updated onboarding flow
This reverts commit 4868c44.
…ck management with new stop playback functionality
feat: implement YouTube video player with playback controls and integ…
fix : group enrollment
Feat/x timezone header
Confidence Score: 3/5Safe to merge after fixing the profile.description / profile.descriptionLong field mismatch in _buildDescriptionLongContent; all other changes look well-structured. The _buildDescriptionLongContent method is the sole content path for non-community (page-type) groups. It reads profile.description — the short metadata subtitle — while the rest of the page logic consistently uses profile.descriptionLong. Any page group with a populated description_long but empty description silently renders nothing. One-line fix needed; everything else looks production-ready. lib/features/group_profile/presentation/widgets/group_profile_body.dart needs the _buildDescriptionLongContent field fix. lib/features/reader/presentation/widgets/reader_actions/segement_action_bar.dart and lib/features/home/presentation/widgets/youtube_video_player.dart have hardcoded English strings that should go through ARB localisation. Reviews (1): Last reviewed commit: "Merge pull request #471 from OpenPecha/f..." | Re-trigger Greptile |
| isEnrolling ? null : () => _navigateToSeriesDetail(profile, series), | ||
| child: Column( | ||
| crossAxisAlignment: CrossAxisAlignment.start, | ||
| children: [ | ||
| ClipRRect( | ||
| borderRadius: BorderRadius.circular(10), | ||
| child: SizedBox( | ||
| width: 56, | ||
| height: 56, | ||
| child: | ||
| series.image != null && !series.image!.isEmpty | ||
| ? ResponsiveCoverImage( | ||
| image: series.image, | ||
| fit: BoxFit.cover, | ||
| width: 56, | ||
| height: 56, | ||
| ) | ||
| : Container( | ||
| color: | ||
| isDark | ||
| ? AppColors.surfaceVariantDark | ||
| : AppColors.grey100, | ||
| child: Icon( | ||
| AppAssets.bookOpenText, | ||
| color: | ||
| isDark ? AppColors.grey500 : AppColors.grey600, | ||
| ), | ||
| SizedBox( |
There was a problem hiding this comment.
Wrong field used in
_buildDescriptionLongContent
The method reads profile.description (the short/subtitle description) instead of profile.descriptionLong. For non-community (page-type) groups this is the only content rendered: if the group has a populated description_long but an empty description, the Expanded area will render nothing (SizedBox.shrink()). Conversely, if description is non-empty, the short text is shown where the long-form content belongs. The variable is even named descriptionLong but bound to the wrong field.
| isEnrolling ? null : () => _navigateToSeriesDetail(profile, series), | |
| child: Column( | |
| crossAxisAlignment: CrossAxisAlignment.start, | |
| children: [ | |
| ClipRRect( | |
| borderRadius: BorderRadius.circular(10), | |
| child: SizedBox( | |
| width: 56, | |
| height: 56, | |
| child: | |
| series.image != null && !series.image!.isEmpty | |
| ? ResponsiveCoverImage( | |
| image: series.image, | |
| fit: BoxFit.cover, | |
| width: 56, | |
| height: 56, | |
| ) | |
| : Container( | |
| color: | |
| isDark | |
| ? AppColors.surfaceVariantDark | |
| : AppColors.grey100, | |
| child: Icon( | |
| AppAssets.bookOpenText, | |
| color: | |
| isDark ? AppColors.grey500 : AppColors.grey600, | |
| ), | |
| SizedBox( | |
| final descriptionLong = profile.descriptionLong?.trim(); |
| Padding( | ||
| padding: const EdgeInsets.fromLTRB(20, 12, 20, 8), | ||
| child: Text( | ||
| 'Videos', |
There was a problem hiding this comment.
Hardcoded English strings not run through the localization system
'Videos' (line 537) and 'Swipe up for more' (line 511) are literal string constants. The rest of the app routes user-visible text through ARB files and the generated AppLocalizations. Users running with a non-English locale will see these strings in English.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
| opacity: _showPlaybackControls ? 1 : 0, | ||
| duration: const Duration(milliseconds: 180), | ||
| child: Row( | ||
| mainAxisSize: MainAxisSize.min, | ||
| children: [ | ||
| _PlaybackControlButton( | ||
| icon: Icons.replay_10_rounded, | ||
| label: 'Back 10 seconds', | ||
| onPressed: | ||
| _isReady |
There was a problem hiding this comment.
Accessibility labels are hardcoded English
The label strings passed to _PlaybackControlButton ('Back 10 seconds', 'Forward 10 seconds', 'Play', 'Pause') are not run through AppLocalizations. Screen-reader users with a non-English system language will hear untranslated labels.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Uh oh!
There was an error while loading. Please reload this page.