public MainPageViewModel(INavigationService navigationService, IPageDialogService pageDialogService, IGoogleService googleService, IFacebookService facebookService, IAppleService appleService) : base(navigationService) { _pageDialogService = pageDialogService; _googleService = googleService; _facebookService = facebookService; _appleService = appleService; _multiFactorService = new MultiFactorService(this); Title = "Main Page"; _registration = CrossFirebaseAuth.Current.Instance.AddAuthStateChangedListener((auth) => { _isSignedIn.Value = auth.CurrentUser != null; }); ShowUserCommand = _isSignedIn.ToAsyncReactiveCommand(); SignUpCommand.Subscribe(SignUp); SignInWithEmailAndPasswordCommand.Subscribe(SignInWithEmailAndPassword); SignInWithGoogleCommand.Subscribe(SignInWithGoogle); SignInWithTwitterCommand.Subscribe(() => SignInWithProvider("twitter.com")); SignInWithFacebookCommand.Subscribe(SignInWithFacebook); SignInWithGitHubCommand.Subscribe(() => SignInWithProvider("github.com")); SignInWithYahooCommand.Subscribe(() => SignInWithProvider("yahoo.com")); SignInWithMicrosoftCommand.Subscribe(() => SignInWithProvider("microsoft.com")); SignInWithAppleCommand.Subscribe(SignInWithApple); SignInWithPhoneNumberCommand.Subscribe(SignInWithPhoneNumber); SignInAnonymouslyCommand.Subscribe(SignInSignInAnonymously); ShowUserCommand.Subscribe(async() => await NavigationService.NavigateAsync <UserPageViewModel>()); }
public MainPageViewModel(INavigationService navigationService, IPageDialogService pageDialogService, IAuthService authService) : base(navigationService) { _pageDialogService = pageDialogService; _authService = authService; Title = "Main Page"; _registration = CrossFirebaseAuth.Current.Instance.AddAuthStateChangedListener((auth) => { _isSignedIn.Value = auth.CurrentUser != null; }); ShowUserCommand = _isSignedIn.ToAsyncReactiveCommand(); SignUpCommand.Subscribe(SignUp); SignInWithEmailAndPasswordCommand.Subscribe(SignInWithEmailAndPassword); SignInWithGoogleCommand.Subscribe(SignInWithGoogle); SignInWithTwitterCommand.Subscribe(SignInWithTwitter); SignInWithFacebookCommand.Subscribe(SignInWithFacebook); SignInWithGitHubCommand.Subscribe(SignInWithGitHub); SignInWithPhoneNumberCommand.Subscribe(SignInWithPhoneNumber); SignInAnonymouslyCommand.Subscribe(SignInSignInAnonymously); ShowUserCommand.Subscribe(async() => await NavigationService.NavigateAsync <UserPageViewModel>()); }
public Task <ObservableCollection <Board> > GetAllPinBoardMessage(string roomID) { TaskCompletionSource <ObservableCollection <Board> > ResultCompletionSource = new TaskCompletionSource <ObservableCollection <Board> >(); Query query = Conn.Collection(pinBoardCollection).WhereEqualTo("roomId", roomID); ReatimeListener = query.AddSnapshotListener(new EventListener((Java.Lang.Object obj, FirebaseFirestoreException e) => { if (e != null) { ResultCompletionSource.SetException(e); } else { QuerySnapshot querySnapshot = (QuerySnapshot)obj; if (!querySnapshot.IsEmpty) { foreach (DocumentChange documentChange in querySnapshot.DocumentChanges) { if (documentChange.GetType() == DocumentChange.Type.Added) { var temp = documentChange.Document.Data; var BoardMessageId = documentChange.Document.Id; var Attachment = (string)temp["attachment"]; var AttachmentFileName = (string)temp["attachmentFileName"]; var Description = (string)temp["description"]; var RoomId = (string)temp["roomId"]; var Title = (string)temp["title"]; var UserEmail = (string)temp["userEmail"]; var UserName = (string)temp["userName"]; var dateTime = (Java.Util.Date)temp["dateTime"]; Attachment attachment = new Attachment(AttachmentFileName, Attachment); User user = new User(UserEmail, UserName); if (AttachmentFileName.EndsWith(".jpg", StringComparison.CurrentCultureIgnoreCase) || AttachmentFileName.EndsWith(".png", StringComparison.CurrentCultureIgnoreCase)) { attachment.Thumbnail = attachment.AttachmentUri; } else if (AttachmentFileName.EndsWith(".mp4", StringComparison.CurrentCultureIgnoreCase)) { attachment.Thumbnail = "round_movie_black_48.png"; } else { attachment.Thumbnail = "round_insert_drive_file_black_48.png"; } board.Add(new Board(BoardMessageId, Title, Description, attachment, user, JavaTimeToCSTime(dateTime))); } } ResultCompletionSource.TrySetResult(board); } else { ResultCompletionSource.TrySetResult(null); } } })); return(ResultCompletionSource.Task); }
public void ClearAllRooms() { if (ReatimeListener != null) { ReatimeListener.Remove(); ReatimeListener = null; } this.Rooms = new ObservableCollection <object>(); }
public void ClearMessages() { if (ReatimeListener != null) { ReatimeListener.Remove(); ReatimeListener = null; } this.messages = new ObservableCollection <Message>(); }
public void ClearAllMoments() { if (ReatimeListener != null) { ReatimeListener.Remove(); ReatimeListener = null; } this.Moments = new ObservableCollection <Moment>(); }
public void ClearAllPinBoardMessage() { if (ReatimeListener != null) { ReatimeListener.Remove(); ReatimeListener = null; } this.board = new ObservableCollection <Board>(); }
private static void MonitorOwnUserProfile(Firebase.CloudFirestore.DocumentReference refer) { if (_listener != null) { _listener.Remove(); } _listener = refer.AddSnapshotListener((changedSnapshot, error) => { var data = changedSnapshot.Data[new NSString("isNeedNotification")] as NSNumber; if (data.BoolValue) { var userProfile = LoadSaveData <UserProfile>(changedSnapshot.Data); App.NotifyCloudDataChanged(userProfile); } }); }
// Get notes data to be shown in TableView async Task GetNotes() { // Stop listening for changes from Firebase Cloud Firestore pendingChangesListener?.Remove(); pendingChangesListener?.Dispose(); pendingChangesListener = null; notes.Clear(); var notesQuery = await notesCollection.OrderedBy("lastModified", true) .GetDocumentsAsync(); foreach (var note in notesQuery.Documents) { // When you create a new note, sometimes the data hasn't // been written in Firestore yet, so, we keep listening // until the data is written. if (note.Metadata.HasPendingWrites) { pendingChangesListener = note.Reference.AddSnapshotListener(DataSavedOnFirestore); return; } var data = note.Data; var title = data ["title"]?.ToString(); var content = data ["content"]?.ToString(); var created = data ["created"] as NSDate; var lastModified = data ["lastModified"] as NSDate; notes.Add(new Note { Id = note.Id, Title = title, Content = content, Created = AppDelegate.GetFormattedDate(created), LastModified = AppDelegate.GetFormattedDate(lastModified) }); } InvokeOnMainThread(() => TableView.ReloadData()); }
public Task <ObservableCollection <Moment> > GetMomentsList() { TaskCompletionSource <ObservableCollection <Moment> > ResultCompletionSource = new TaskCompletionSource <ObservableCollection <Moment> >(); Java.Util.Calendar cal = Java.Util.Calendar.Instance; Java.Util.Date CurrentDateTime = cal.Time; cal.Add(Java.Util.Calendar.Date, -1); Java.Util.Date YesterdayDateTime = cal.Time; Debug.Write(CurrentDateTime); Debug.Write(YesterdayDateTime); var Path = Conn.Collection(momentCollection) .WhereEqualTo("receivers." + UserSetting.UserEmail.Replace(".", ":"), false) .WhereGreaterThanOrEqualTo("dateTime", YesterdayDateTime) .WhereLessThanOrEqualTo("dateTime", CurrentDateTime) .OrderBy("dateTime"); ReatimeListener = Path.AddSnapshotListener(new EventListener((Java.Lang.Object obj, FirebaseFirestoreException e) => { if (e != null) { Debug.Write(e.Message); ResultCompletionSource.TrySetResult(null); return; } else { QuerySnapshot querySnapshot = (QuerySnapshot)obj; if (!querySnapshot.IsEmpty) { foreach (DocumentChange documentChange in querySnapshot.DocumentChanges) { if (documentChange.GetType() == DocumentChange.Type.Added) { var temp = documentChange.Document.Data; var Id = documentChange.Document.Id; var Attachment = (string)temp["attachment"]; var DateTime = (Java.Util.Date)temp["dateTime"]; var Description = (string)temp["description"]; var Sender = (string)temp["sender"]; var SenderName = (string)temp["senderName"]; string thumbnail = null; if (Attachment != null) { if (Attachment.Contains("jpg", StringComparison.OrdinalIgnoreCase) || Attachment.Contains("png", StringComparison.OrdinalIgnoreCase)) { thumbnail = Attachment; } else { thumbnail = "round_movie_black_48.png"; } } Attachment attachment = new Attachment(); attachment.AttachmentUri = Attachment; attachment.Thumbnail = thumbnail; Moments.Add(new Moment(Id, Sender, SenderName, JavaTimeToCSTime(DateTime), Description, attachment)); } } } ResultCompletionSource.TrySetResult(Moments); } })); return(ResultCompletionSource.Task); }
public Task <ObservableCollection <object> > GetAllRoom() { TaskCompletionSource <ObservableCollection <object> > ResultCompletionSource = new TaskCompletionSource <ObservableCollection <object> >(); Query query = Conn.Collection("roomList").WhereEqualTo("users." + UserSetting.UserEmail.Replace(".", ":"), true); ReatimeListener = query.AddSnapshotListener(new EventListener(async(Java.Lang.Object obj, FirebaseFirestoreException e) => { if (e != null) { Debug.Write("Error In Gett All Room : " + e.Message); return; } else { QuerySnapshot querySnapshot = (QuerySnapshot)obj; if (!querySnapshot.IsEmpty) { foreach (DocumentChange documentChange in querySnapshot.DocumentChanges) { if (documentChange.GetType() == DocumentChange.Type.Added) { var temp = documentChange.Document.Data; var Id = documentChange.Document.Id; var image = (string)temp["image"]; var isDestruct = (bool)temp["isDestruct"]; var roomTitle = (string)temp["roomTitle"]; var users = (Android.Runtime.JavaDictionary)temp["users"]; string admin; var isGroup = (bool)temp["isGroup"]; if (isGroup) { admin = (string)temp["admin"]; ObservableCollection <User> GroupMembers = new ObservableCollection <User>(); foreach (string key in users.Keys) { GroupMembers.Add(new User(key.Replace(":", "."))); } Rooms.Add(new GroupChatRoom(Id, roomTitle, admin, GroupMembers, isDestruct)); } else { string RecipientEmail = null; if (users.Keys.Count == 2) { foreach (string key in users.Keys) { if (!key.Replace(":", ".").Equals(UserSetting.UserEmail)) { RecipientEmail = key.Replace(":", "."); } } } string RecipientName = await GetUsername(RecipientEmail); Rooms.Add(new IndividualChatRoom(Id, RecipientName, new User(RecipientEmail, RecipientName), isDestruct)); } } } ResultCompletionSource.TrySetResult(Rooms); } else { ResultCompletionSource.SetResult(null); } } })); return(ResultCompletionSource.Task); }
public Task <ObservableCollection <Message> > GetMessage(string roomId) { TaskCompletionSource <ObservableCollection <Message> > ResultCompletionSource = new TaskCompletionSource <ObservableCollection <Message> >(); ReatimeListener = Conn.Collection("messages").WhereEqualTo("roomId", roomId).OrderBy("sendDateTime") .AddSnapshotListener(new EventListener((Java.Lang.Object obj, FirebaseFirestoreException exception) => { if (exception == null) { QuerySnapshot querySnapshot = (QuerySnapshot)obj; if (!querySnapshot.IsEmpty) { foreach (DocumentChange documentChange in querySnapshot.DocumentChanges) { if (documentChange.GetType() == DocumentChange.Type.Added) { var temp = documentChange.Document.Data; var tempMessage = InitialMessage(documentChange.Document.Id, temp); messages.Add(tempMessage); if (tempMessage.IsRead != null && !tempMessage.IsRead.ContainsKey(UserSetting.UserEmail.Replace(".", ":"))) { SetRead(tempMessage); } } else if (documentChange.GetType() == DocumentChange.Type.Modified) { messages[documentChange.OldIndex] = InitialMessage(documentChange.Document.Id, documentChange.Document.Data); } else if (documentChange.GetType() == DocumentChange.Type.Removed) { messages.RemoveAt(documentChange.OldIndex); } } foreach (Message tempMessage in messages) { if (tempMessage.IsRead != null) { var tempStatus = tempMessage.IsRead.ContainsKey(UserSetting.UserEmail.Replace(".", ":")); if (tempStatus && tempMessage.IsRead[UserSetting.UserEmail.Replace(".", ":")]) { var indexOf = messages.IndexOf(tempMessage); messages[indexOf].Text = "--This message was destructed--"; messages[indexOf].AttachmentUri = ""; messages[indexOf].AttachmentFileName = ""; } } } ResultCompletionSource.TrySetResult(messages); } else { ResultCompletionSource.TrySetResult(null); } } })); return(ResultCompletionSource.Task); }