public LongRunningJob(IProgressIndicatorService progressIndicatorService, IMessageService messageService, Func <Task> jobFactory, string progressMessage) { this.progressIndicatorService = progressIndicatorService; this.messageService = messageService; this.progressMessage = progressMessage; this.jobFactory = jobFactory; }
public MainViewModel(IGitterApiService gitterApiService, ILocalNotificationService localNotificationService, IApplicationStorageService applicationStorageService, IProgressIndicatorService progressIndicatorService, IPasswordStorageService passwordStorageService, IEventService eventService, ITelemetryService telemetryService, INavigationService navigationService) { // Services _gitterApiService = gitterApiService; _localNotificationService = localNotificationService; _applicationStorageService = applicationStorageService; _progressIndicatorService = progressIndicatorService; _passwordStorageService = passwordStorageService; _eventService = eventService; _navigationService = navigationService; _telemetryService = telemetryService; // Commands SelectRoomCommand = new RelayCommand<IRoomViewModel>(SelectRoom); ChatWithUsCommand = new RelayCommand(ChatWithUs, CanChatWithUs); GoToAboutPageCommand = new RelayCommand(GoToAboutPage); RefreshCommand = new RelayCommand(Refresh, () => !IsRefreshing); ToggleSearchCommand = new RelayCommand<bool>(ToggleSearch); // Properties CurrentDateTime = DateTime.Now; if (IsInDesignMode) { // Code runs in Blend --> create design time data. CurrentUser = new User { Id = "53307734c3599d1de448e192", Username = "******", DisplayName = "Mauro Pompilio", Url = "/malditogeek", SmallAvatarUrl = "https://avatars.githubusercontent.com/u/14751?", MediumAvatarUrl = "https://avatars.githubusercontent.com/u/14751?" }; var suprememoocow = new User { Id = "53307831c3599d1de448e19a", Username = "******", DisplayName = "Andrew Newdigate", Url = "/suprememoocow,", SmallAvatarUrl = "https://avatars.githubusercontent.com/u/594566?", MediumAvatarUrl = "https://avatars.githubusercontent.com/u/594566?" }; Rooms.Add(new RoomViewModel(new Room { Id = "53307860c3599d1de448e19d", Name = "Andrew Newdigate", Topic = string.Empty, OneToOne = true, Users = new[] { suprememoocow }, UnreadItems = 52, UnreadMentions = 0, DisabledNotifications = false, Type = "ONETOONE" }, gitterApiService, localNotificationService, progressIndicatorService, eventService, telemetryService, this)); Rooms.Add(new RoomViewModel(new Room { Id = "5330777dc3599d1de448e194", Name = "gitterHQ", Topic = "Gitter", Url = "gitterHQ", OneToOne = false, UserCount = 2, UnreadItems = 0, UnreadMentions = 0, LastAccessTime = new DateTime(2014, 3, 24, 18, 22, 28), DisabledNotifications = false, Type = "ORG", Version = 1 }, gitterApiService, localNotificationService, progressIndicatorService, eventService, telemetryService, this)); Rooms.Add(new RoomViewModel(new Room { Id = "5330780dc3599d1de448e198", Name = "gitterHQ/devops", Topic = string.Empty, Url = "gitterHQ/devops", OneToOne = false, UserCount = 2, UnreadItems = 3, UnreadMentions = 0, LastAccessTime = new DateTime(2014, 3, 24, 18, 23, 10), DisabledNotifications = false, Type = "ORG_CHANNEL", Version = 1 }, gitterApiService, localNotificationService, progressIndicatorService, eventService, telemetryService, this)); Rooms.Add(new RoomViewModel(new Room { Id = "53307793c3599d1de448e196", Name = "malditogeek/vmux", Topic = "VMUX - Plugin-free video calls in your browser using WebRTC", Url = "gitterHQ/devops", OneToOne = false, UserCount = 2, UnreadItems = 42, UnreadMentions = 0, LastAccessTime = new DateTime(2014, 3, 24, 18, 21, 08), DisabledNotifications = false, Type = "REPO", Version = 1 }, gitterApiService, localNotificationService, progressIndicatorService, eventService, telemetryService, this)); SelectedRoom = Rooms.FirstOrDefault(); foreach (var room in Rooms) SearchedRooms.Add(room); } else { // Code runs "for real" // Events _eventService.ReadRoom .Subscribe(room => { HtmlToXaml.HtmlToXaml.RoomName = room.Room.Name; }); HtmlToXaml.HtmlToXaml.ImageTapped += (sender, args) => { var image = sender as Image; var bitmapImage = image.Source as BitmapImage; ViewModelLocator.FullImage.Source = bitmapImage.UriSource.OriginalString; _navigationService.NavigateTo("FullImage"); }; // Retrieve access token to use in the app string token = _passwordStorageService.Retrieve("token"); _gitterApiService.SetToken(token); // Add event that will update READ new messages _currentSelectedRoomUnreadMessages = _eventService.NotifyUnreadMessages .Subscribe(async unreadMessages => await NotifyReadMessages(unreadMessages)); } }
public RoomViewModel(Room room, IGitterApiService gitterApiService, ILocalNotificationService localNotificationService, IProgressIndicatorService progressIndicatorService, IEventService eventService, ITelemetryService telemetryService, IMainViewModel mainViewModel) { // Properties Room = room; // View Models _mainViewModel = mainViewModel; // Commands SendMessageCommand = new RelayCommand(SendMessage, CanSendMessage); SendMessageWithParamCommand = new RelayCommand<bool>(SendMessageWithParam); RemoveMessageCommand = new RelayCommand<IMessageViewModel>(RemoveMessage, CanRemoveMessage); CopyMessageCommand = new RelayCommand<IMessageViewModel>(CopyMessage); RespondToCommand = new RelayCommand<User>(RespondTo); ViewProfileCommand = new RelayCommand<User>(ViewProfile); TalkCommand = new RelayCommand(Talk); RefreshCommand = new RelayCommand(Refresh); // Inject Services _gitterApiService = gitterApiService; _localNotificationService = localNotificationService; _progressIndicatorService = progressIndicatorService; _eventService = eventService; _telemetryService = telemetryService; if (IsInDesignMode) { // Code runs in Blend --> create design time data. var malditogeek = new User { Id = "53307734c3599d1de448e192", Username = "******", DisplayName = "Mauro Pompilio", Url = "/malditogeek", SmallAvatarUrl = "https://avatars.githubusercontent.com/u/14751?", MediumAvatarUrl = "https://avatars.githubusercontent.com/u/14751?" }; var suprememoocow = new User { Id = "53307831c3599d1de448e19a", Username = "******", DisplayName = "Andrew Newdigate", Url = "/suprememoocow,", SmallAvatarUrl = "https://avatars.githubusercontent.com/u/594566?", MediumAvatarUrl = "https://avatars.githubusercontent.com/u/594566?" }; Messages = new MessagesIncrementalLoadingCollection("123456", gitterApiService, eventService, mainViewModel) { new MessageViewModel(new Message { Id = "53316dc47bfc1a000000000f", Text = "Hi @suprememoocow !", Html = "Hi <span data-link-type=\"mention\" data-screen-name=\"suprememoocow\" class=\"mention\">@suprememoocow</span> !", SentDate = new DateTime(2014, 3, 25, 11, 51, 32), EditedDate = null, User = malditogeek, UnreadByCurrent = false, ReadCount = 0, Urls = new List<MessageUrl>(), Mentions = new List<Mention> { new Mention { ScreenName = "suprememoocow", UserId = "53307831c3599d1de448e19a" } }, Issues = new List<Issue>(), Version = 1 }), new MessageViewModel(new Message { Id = "53316ec37bfc1a0000000011", Text = "I've been working on #11, it'll be ready to ship soon", Html = "I've been working on <span data-link-type=\"issue\" data-issue=\"11\" class=\"issue\">#11</span>, it'll be ready to ship soon", SentDate = new DateTime(2014, 3, 25, 11, 55, 47), EditedDate = null, User = malditogeek, UnreadByCurrent = false, ReadCount = 0, Urls = new List<MessageUrl>(), Mentions = new List<Mention>(), Issues = new List<Issue> { new Issue {Number = "11"} }, Version = 1 }), new MessageViewModel(new Message { Id = "53316ec37bfc1a0000000012", Text = "This is a test message", Html = "This is a test message", SentDate = new DateTime(2014, 3, 25, 11, 55, 47), EditedDate = null, User = suprememoocow, UnreadByCurrent = false, ReadCount = 0, Urls = new List<MessageUrl>(), Mentions = new List<Mention>(), Issues = new List<Issue>(), Version = 1 }), new MessageViewModel(new Message { Id = "53316ec37bfc1a0000000013", Text = "Another long long ............... message", Html = "Another long long ............... message", SentDate = new DateTime(2014, 3, 25, 11, 55, 47), EditedDate = null, User = malditogeek, UnreadByCurrent = false, ReadCount = 0, Urls = new List<MessageUrl>(), Mentions = new List<Mention>(), Issues = new List<Issue>(), Version = 1 }) }; } else { // Code runs "for real" Messages = new MessagesIncrementalLoadingCollection(Room.Id, gitterApiService, eventService, mainViewModel); OpenRealtimeStream(); } // Update count of unread messages UnreadMessagesCount = Room.UnreadItems; }