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}"); }
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); }
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}"); }