Ejemplo n.º 1
0
        public static string MakePageUrl(PageDetailType PageType, object data)
        {
            var baseUrl = AppConfig.PAGE_BASE_LINK;

            object reversed;

            switch (data)
            {
            case FootballMatchInfo matchInfo:
                reversed = ShinyHost.Resolve <FixtureDetailToMatchInfo>().Reverse(matchInfo);
                break;

            case FootballLeagueInfo leagueInfo:
                reversed = ShinyHost.Resolve <LeagueDetailToLeagueInfo>().Reverse(leagueInfo);
                break;

            case FootballTeamInfo teamInfo:
                reversed = ShinyHost.Resolve <TeamDetailToTeamInfo>().Reverse(teamInfo);
                break;

            default:
                return(null);
            }

            var serializeData = MessagePackSerializer.Serialize(reversed);
            var dataString    = Convert.ToBase64String(serializeData);

            return($"{baseUrl}?page={PageType}&data={dataString}");
        }
Ejemplo n.º 2
0
        public async Task <bool> AddBookmark <T>(T item, SportsType sportsType, PageDetailType bookmarkType) where T : ISQLiteStorable, IBookmarkable, new()
        {
            var membershipType = ShinyHost.Resolve <MembershipService>().MemberRoleType;

            if (MembershipAdvantage.TryGetValue(membershipType, out MembershipAdvantage advantage))
            {
                int limitSize = 0;
                switch (bookmarkType)
                {
                case PageDetailType.Match:
                    limitSize = advantage.MatchBookmarkLimit;
                    break;

                case PageDetailType.League:
                    limitSize = advantage.LeagueBookmarkLimit;
                    break;

                case PageDetailType.Team:
                    limitSize = advantage.TeamBookmarkLimit;
                    break;
                }

                int curSavedCnt = (await _sqliteService.SelectAllAsync <T>()).Count;
                if (curSavedCnt < limitSize) // 저장 가능
                {
                    item.Order        = 0;
                    item.StoredTime   = DateTime.UtcNow;
                    item.IsBookmarked = true;

                    var ret = await _sqliteService.InsertOrUpdateAsync <T>(item);

                    Debug.Assert(ret != 0);

                    string message = this.BuildBookmarkMessage(sportsType, bookmarkType);
                    MessagingCenter.Send(this, message, item);

                    UserDialogs.Instance.Toast(LocalizeString.Set_Bookmark);
                }
                else
                {
                    UserDialogs.Instance.Toast(LocalizeString.Bookmark_Inventory_Full);
                }
            }
            else
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 3
0
        public async Task <bool> RemoveBookmark <T>(T item, SportsType sportsType, PageDetailType bookmarkType, bool showToastMsg = true) where T : ISQLiteStorable, IBookmarkable, new()
        {
            item.Order        = 0;
            item.StoredTime   = DateTime.UtcNow;
            item.IsBookmarked = false;

            var ret = await _sqliteService.DeleteAsync <T>(item.PrimaryKey);

            Debug.Assert(ret != 0);

            string message = this.BuildBookmarkMessage(sportsType, bookmarkType);

            MessagingCenter.Send(this, message, item);

            if (showToastMsg)
            {
                UserDialogs.Instance.Toast(LocalizeString.Delete_Bookmark);
            }

            return(true);
        }
 public static string BuildBookmarkMessage(this IBookmarkService bookmarkService, SportsType sportsType, PageDetailType bookmarkType)
 {
     return($"{sportsType}-{bookmarkType}");
 }