* feat: client-side knock auto-accept via KnockTracker Replace server-side AutoAcceptInviteIfKnocked (removed in synapse-pangea-chat PR #21) with client-side KnockTracker. - Record knocked room IDs in Matrix account data (org.pangea.knocked_rooms) - Auto-join when invite arrives for a previously knocked room - Migrate storage from GetStorage to Matrix account data for cross-device sync and reinstall persistence - Add joining-courses.instructions.md design doc * formatting * centralizes calls to knock-storage related functions --------- Co-authored-by: ggurdin <ggurdin@gmail.com>
24 lines
639 B
Dart
24 lines
639 B
Dart
import 'package:matrix/matrix.dart';
|
|
|
|
import 'package:fluffychat/pangea/join_codes/knock_tracker.dart';
|
|
|
|
extension KnockRoomExtension on Room {
|
|
bool get hasKnocked => KnockTracker.hasKnocked(client, id);
|
|
|
|
Future<void> joinKnockedRoom() async {
|
|
await join();
|
|
await KnockTracker.clearKnock(client, id);
|
|
}
|
|
}
|
|
|
|
extension KnockClientExtension on Client {
|
|
Future<String> knockAndRecordRoom(
|
|
String roomIdOrAlias, {
|
|
List<String>? via,
|
|
String? reason,
|
|
}) async {
|
|
final resp = await knockRoom(roomIdOrAlias, via: via, reason: reason);
|
|
await KnockTracker.recordKnock(this, roomIdOrAlias);
|
|
return resp;
|
|
}
|
|
}
|