The cutest instant messenger in the [matrix]
Find a file
wcjord 6f32aab48b
fix: show "knock accepted" push notification body instead of "You have been invited" (#5823) (#5835)
* fix: show knock-accepted notification body when invite follows a knock (#5823)

When Synapse accepts a knock it sends an m.room.member invite event. The client
was displaying the generic 'You have been invited by X' push notification body
because the invite event alone doesn't carry prev_content on the push path.

Use KnockTracker (already used for auto-join) to detect knock-accepted invites
and show a dedicated 'Your join request was accepted!' notification body instead.

- Add knockAccepted string to intl_en.arb
- Extract condition into isKnockAcceptedInvite() pure util for testability
- Expose KnockTracker.getKnockedRoomIds() publicly (was _getKnockedRoomIds)
- Override notification body in push_helper.dart (background) and
  local_notifications_extension.dart (foreground/web)
- Unit tests for all isKnockAcceptedInvite() branches (9 tests)

* formatting

* fix up pangea comments

* fix: avoid race condition with knocked room account data updates and local push notification content

* translations

---------

Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-27 12:29:50 -05:00
.github
.vscode
android
assets
docs
integration_test
ios
lib fix: show "knock accepted" push notification body instead of "You have been invited" (#5823) (#5835) 2026-02-27 12:29:50 -05:00
linux
macos
pangea_packages/fcm_shared_isolate
scripts
snap
test fix: show "knock accepted" push notification body instead of "You have been invited" (#5823) (#5835) 2026-02-27 12:29:50 -05:00
test_driver
web
windows
.gitignore
.mailmap
.metadata
analysis_options.yaml
CHANGELOG.md
config.sample.json
CONTRIBUTING.md
devtools_options.yaml
Dockerfile
l10n.yaml
LICENSE
licenses.yaml
PRIVACY.md
pubspec.lock
pubspec.yaml
README.md
SECURITY.md
sentry.properties
TRANSLATORS_GUIDE.md

Overview

Pangea Chat is a web and mobile platform which lets students learn a language while texting their friends. Addressing the gap in communicative language teaching, especially for beginners lacking skill and confidence, Pangea Chat provides a low-stress, high-support environment for language learning through authentic conversations. By integrating human and artificial intelligence, the app enhances communicative abilities and supports educators. Pangea Chat has been grant funded by the National Science Foundation and Virginia Innovation Partnership Corporation based on its technical innovation and potential for broad social impact. Our mission is to build a global, decentralized learning network supporting intercultural learning and exchange.

Pangea Chat Client Setup

  • Download VSCode if you do not already have it installed. This is the preferred IDE for development with Pangea Chat.
  • Download flutter on your device using this guide: https://docs.flutter.dev/get-started/install
  • Test to make sure that flutter is properly installed by running “flutter version”
  • Ensure that Google Chrome is installed
  • Install the latest version of XCode
    • After downloading XCode, ensure that the iOS simulator runtime is installed. To do this, after initially downloading XCode, a screen will open where you can select the platforms you wish to develop for. Selected iOS and download from there.
  • Install the latest version of Android Studio
    • After downloading Android Studio, open Android Studio and go through setup wizard
  • In Android Studio, open settings -> Android SDK -> SDK tools, then click “Android SDK Command Line Tools” and click OK to run the download
  • If you do not have homebrew install on your device, install homebrew by follow the instructions here: https://brew.sh/
  • Run “brew install cocoapods” to install cocoapods
  • Run “flutter doctor” and for any missing components, follow the instructions from the print out to install / setup
  • Clone the client repo
  • Uncomment the lines in the pubspec.yaml file in the assets section with paths to .env file
  • To run on iOS:
    • Run “flutter precache --ios”
    • Go to the iOS folder and run “pod install”
  • To run on Android:
  • To run the app from VSCode terminal:
    • On web, run flutter run -d chrome --hot
    • Or as a web server (Usage with WSL or remote connect) flutter run --release -d web-server -web-port=3000
    • On mobile device or simulator, run flutter run hot -d <DEVICE_NAME>

Special thanks

  • Pangea Chat is a fork of FluffyChat which is a [matrix] client written in Flutter. You can support the primary maker of FluffyChat directly here.

  • Fabiyamada is a graphics designer and has made the fluffychat logo and the banner. Big thanks for her great designs.

  • Advocatux has made the Spanish translation with great love and care. He always stands by my side and supports my work with great commitment.

  • Thanks to MTRNord and Sorunome for developing.

  • Also thanks to all translators and testers! With your help, fluffychat is now available in more than 12 languages.

  • WoodenBeaver sound theme for the notification sound.

  • The Matrix Foundation for making and maintaining the emoji translations used for emoji verification, licensed Apache 2.0