service: Implement setting the subscription state of a contact

This commit is contained in:
2022-04-08 20:29:46 +02:00
parent b813f5e5e1
commit dfecaba50e
10 changed files with 71 additions and 21 deletions

View File

@@ -18,6 +18,7 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
on<ProfilePageRequestedEvent>(_onProfileRequested);
on<ConversationUpdatedEvent>(_onConversationUpdated);
on<AvatarSetEvent>(_onAvatarSet);
on<SetSubscriptionStateEvent>(_onSetSubscriptionState);
}
Future<void> _onProfileRequested(ProfilePageRequestedEvent event, Emitter<ProfileState> emit) async {
@@ -71,4 +72,13 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
awaitable: false
);
}
Future<void> _onSetSubscriptionState(SetSubscriptionStateEvent event, Emitter<ProfileState> emit) async {
// TODO: Maybe already emit the state change to have it instant and debounce it until
// everything else is done
GetIt.I.get<BackgroundServiceDataSender>().sendData(
SetShareOnlineStatusCommand(jid: event.jid, share: event.shareStatus),
awaitable: false
);
}
}

View File

@@ -35,3 +35,11 @@ class AvatarSetEvent extends ProfileEvent {
AvatarSetEvent(this.path, this.hash);
}
/// Triggered by the UI when the subscription state should be set
class SetSubscriptionStateEvent extends ProfileEvent {
final String jid;
final bool shareStatus;
SetSubscriptionStateEvent(this.jid, this.shareStatus);
}