示例#1
0
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            NavigationService.Lock();

            User user;

            switch (e.Parameter)
            {
            case string uid:
                user = await RestApiService <User> .Get(new FirebaseKey(uid, typeof(User).Name));

                break;

            case FirebaseKey key:
                user = await RestApiService <User> .Get(key);

                break;

            case IFirebaseEntity databaseItem:
                user = await RestApiService <User> .Get(databaseItem.Key);

                break;

            default:
                await NotificationService.DisplayErrorMessage("Developer error.");

                throw new InvalidOperationException();
            }

            if (user == null)
            {
                await NotificationService.DisplayErrorMessage("This user does not exist.");

                NavigationService.GoBack();
            }

            ViewModel = new UserViewModel(user);

            InitializeComponent();

            NavigationService.Unlock();

            ViewModel.Model.Views++;

            if (!await RestApiService <User> .Update(ViewModel.Model))
            {
                Logger.WriteLine($"Failed to increment view counter for user {ViewModel.Model.Key}.");
            }

            NavigationService.SetHeaderTitle($"{ViewModel.Model?.UserName}'s profile");
        }
示例#2
0
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            NavigationService.Lock();

            ResourcePack resourcePack;

            switch (e.Parameter)
            {
            case FirebaseKey key:
                resourcePack = await RestApiService <ResourcePack> .Get(key);

                break;

            case IFirebaseEntity entity:
                resourcePack = await RestApiService <ResourcePack> .Get(entity.Key);

                break;

            default:
                await NotificationService.DisplayErrorMessage("Developer error.");

                throw new InvalidOperationException();
            }

            if (resourcePack == null)
            {
                await NotificationService.DisplayErrorMessage("This resource pack does not exist.");

                NavigationService.GoBack();
            }

            ViewModel = new ResourcePackViewModel(resourcePack);

            InitializeComponent();

            NavigationService.Unlock();

            ViewModel.Model.Views++;

            if (!await RestApiService <ResourcePack> .Update(ViewModel.Model))
            {
                Logger.WriteLine($"Failed to increment view counter for code {ViewModel.Model.Key}.");
            }

            NavigationService.SetHeaderTitle(ViewModel.Model?.Name);
        }
示例#3
0
        public async Task <bool> Befriend()
        {
            if (AuthService.CurrentUser == null || Model == null)
            {
                await NotificationService.DisplayErrorMessage("Something went wrong. Try again later.");

                return(false);
            }

            if (AuthService.CurrentUser.Equals(Model))
            {
                await NotificationService.DisplayErrorMessage("You can't be friends with yourself!");

                return(false);
            }

            AuthService.CurrentUser.AddFriend(Model);
            await RestApiService <User> .Update(Model);

            await RestApiService <User> .Update(AuthService.CurrentUser);

            return(true);
        }