public ReadingListPageViewModel(INavigationService navigationService, IPipServicesClient client)
            : base(navigationService)
        {
            if (client == null)
                throw new ArgumentNullException(nameof(client));

            _client = client;
        }
        public ReadCommentPageViewModel(INavigationService navigationService, IDialogService dialogService, IPipServicesClient client)
            : base(navigationService)
        {
            if (dialogService == null)
                throw new ArgumentNullException(nameof(dialogService));
            if (client == null)
                throw new ArgumentNullException(nameof(client));

            _dialogService = dialogService;
            _client = client;

            _commandUpdate = new DelegateCommand(CommandUpdateAction, CommandUpdatePredicate);
            _commandRemove = new DelegateCommand(CommandRemoveAction, CommandRemovePredicate);
        }
        public WritePostPageViewModel(INavigationService navigationService, IDialogService dialogService, IPipServicesClient client)
            : base(navigationService)
        {
            if (dialogService == null)
                throw new ArgumentNullException(nameof(dialogService));
            if (client == null)
                throw new ArgumentNullException(nameof(client));

            _dialogService = dialogService;
            _client = client;

            _commandCreate = new DelegateCommand(CommandCreateAction, CommandCreatePredicate);

            _commandCreate.ObserveProperty(() => Content);
        }
        public ConnectionEntryViewModel(IPipServicesClient client, string userID, Connection entity, bool isRead)
        {
            if (client == null)
                throw new ArgumentNullException(nameof(client));
            if (userID == null)
                throw new ArgumentNullException(nameof(userID));
            if (entity == null)
                throw new ArgumentNullException(nameof(entity));

            _client = client;
            _userID = userID;
            _entity = entity;
            _isRead = isRead;
            _commandAdd = new DelegateCommand(CommandAddAction, CommandAddPredicate);
            _commandAdd.ObserveProperty(() => HasActiveTask);
            _commandAdd.ObserveProperty(() => IsRead);
        }
        public ReadPostPageViewModel(INavigationService navigationService, IDialogService dialogService, IPipServicesClient client)
            : base(navigationService)
        {
            if (dialogService == null)
                throw new ArgumentNullException(nameof(dialogService));
            if (client == null)
                throw new ArgumentNullException(nameof(client));

            _dialogService = dialogService;
            _client = client;

            _commandRefresh = new DelegateCommand(CommandRefreshAction, CommandRefreshPredicate);
            _commandComment = new DelegateCommand(CommandCommentAction, CommandCommentPredicate);
            _commandUpdate = new DelegateCommand(CommandUpdateAction, CommandUpdatePredicate);
            _commandRemove = new DelegateCommand(CommandRemoveAction, CommandRemovePredicate);

            _commandRefresh.ObserveProperty(() => HasActiveTask);
            _commandComment.ObserveProperty(() => HasActiveTask);
            _commandUpdate.ObserveProperty(() => HasActiveTask);
            _commandRemove.ObserveProperty(() => HasActiveTask);
        }
        public SignInPageViewModel(INavigationService navigationService, IDialogService dialogService, IStorageService storage, IPipServicesClient client)
            : base(navigationService)
        {
            if (dialogService == null)
                throw new ArgumentNullException(nameof(dialogService));
            if (storage == null)
                throw new ArgumentNullException(nameof(storage));
            if (client == null)
                throw new ArgumentNullException(nameof(client));

            _dialogService = dialogService;
            _storage = storage;
            _client = client;

            _commandSignIn = new DelegateCommand(CommandSignInAction, CommandSignInPredicate);
            _commandNavigateSignUp = new DelegateCommand(CommandNavigateSignUpAction);
            _commandCancel = new DelegateCommand(CommandCancelInAction);

            _commandSignIn.ObserveProperty(() => Server);
            _commandSignIn.ObserveProperty(() => ID);
            _commandSignIn.ObserveProperty(() => Key);
        }
        public HomePageViewModel(INavigationService navigationService, IDialogService dialogService, IPipServicesClient client)
            : base(navigationService)
        {
            if (dialogService == null)
                throw new ArgumentNullException(nameof(dialogService));
            if (client == null)
                throw new ArgumentNullException(nameof(client));

            _dialogService = dialogService;
            _client = client;

            _commandCreate = new DelegateCommand(CommandCreateAction, CommandCreatePredicate);
            _commandUpdate = new DelegateCommand(CommandUpdateAction, CommandUpdatePredicate);
            _commandRemove = new DelegateCommand(CommandRemoveAction, CommandRemovePredicate);
            _commandRefresh = new DelegateCommand(CommandRefreshAction, CommandRefreshPredicate);
            _commandComment = new DelegateCommand(CommandCommentAction, CommandCommentPredicate);
            _commandModifyReadingList = new DelegateCommand(CommandModifyReadingListAction);
            _commandSignOut = new DelegateCommand(CommandSignOutAction);
            _commandRemoveComment = new DelegateCommand<CommentEntryViewModel>(CommandRemoveCommentAction);
            _commandStopReading = new DelegateCommand<ConnectionEntryViewModel>(CommandStopReadingAction);

            _commandCreate.ObserveProperty(() => HasActiveTask);

            _commandUpdate.ObserveProperty(() => SelectedEntryJournal);
            _commandUpdate.ObserveProperty(() => HasActiveTask);
            _commandUpdate.ObserveProperty(() => SelectedMenuIndex);

            _commandRemove.ObserveProperty(() => SelectedEntryJournal);
            _commandRemove.ObserveProperty(() => HasActiveTask);
            _commandRemove.ObserveProperty(() => SelectedMenuIndex);

            _commandRefresh.ObserveProperty(() => HasActiveTask);

            _commandComment.ObserveProperty(() => SelectedMenuIndex);
            _commandComment.ObserveProperty(() => HasActiveTask);
            _commandComment.ObserveProperty(() => SelectedEntryJournal);
            _commandComment.ObserveProperty(() => SelectedEntryPublic);
        }