From da73a2f5d223253ef3dcfa5782dbffec9de99cf7 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Thu, 18 Apr 2019 12:53:05 -0400 Subject: [PATCH] mobile broadcaster service --- src/App/Services/MobileBroadcasterService.cs | 29 ++++++++++++++++++++ src/Core/Abstractions/IBroadcasterService.cs | 11 ++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/App/Services/MobileBroadcasterService.cs create mode 100644 src/Core/Abstractions/IBroadcasterService.cs diff --git a/src/App/Services/MobileBroadcasterService.cs b/src/App/Services/MobileBroadcasterService.cs new file mode 100644 index 000000000..c2e53cfc0 --- /dev/null +++ b/src/App/Services/MobileBroadcasterService.cs @@ -0,0 +1,29 @@ +using Bit.Core.Abstractions; +using System; +using Xamarin.Forms; + +namespace Bit.App.Services +{ + public class MobileBroadcasterService : IBroadcasterService + { + public void Send(T message, string id = null) + { + if(string.IsNullOrWhiteSpace(id)) + { + throw new NotSupportedException("Cannot send a message to all subscribers."); + } + MessagingCenter.Send(Application.Current, id, message); + } + + public void Subscribe(string id, Action messageCallback) + { + MessagingCenter.Subscribe(Application.Current, id, + (sender, message) => messageCallback(message)); + } + + public void Unsubscribe(string id) + { + MessagingCenter.Unsubscribe(Application.Current, id); + } + } +} diff --git a/src/Core/Abstractions/IBroadcasterService.cs b/src/Core/Abstractions/IBroadcasterService.cs new file mode 100644 index 000000000..6a7a02b2d --- /dev/null +++ b/src/Core/Abstractions/IBroadcasterService.cs @@ -0,0 +1,11 @@ +using System; + +namespace Bit.Core.Abstractions +{ + public interface IBroadcasterService + { + void Send(T message, string id = null); + void Subscribe(string id, Action messageCallback); + void Unsubscribe(string id); + } +} \ No newline at end of file