|
|
|
|
@ -4,6 +4,7 @@ using BookAStar.Model.Auth.Account;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using Plugin.Settings;
|
|
|
|
|
using Plugin.Settings.Abstractions;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Collections.ObjectModel;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
@ -21,14 +22,18 @@ namespace BookAStar
|
|
|
|
|
public static class MainSettings
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
private static ISettings AppSettings {
|
|
|
|
|
get {
|
|
|
|
|
public static ISettings AppSettings
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return CrossSettings.Current;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region Setting Constants
|
|
|
|
|
|
|
|
|
|
public static readonly string SettingsDefault = string.Empty;
|
|
|
|
|
public static readonly string EntityDataSettingsPrefix = "Ed";
|
|
|
|
|
public static readonly string EntityCursorSettingsPrefix = "Ec";
|
|
|
|
|
private const string userNameKey = "user_id";
|
|
|
|
|
private const string PushNotificationsKey = "pushNotifs";
|
|
|
|
|
private const string AllowGPSUsageKey = "allowGPSUsage";
|
|
|
|
|
@ -65,7 +70,8 @@ namespace BookAStar
|
|
|
|
|
|
|
|
|
|
public static string UserName
|
|
|
|
|
{
|
|
|
|
|
get {
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return AppSettings.GetValueOrDefault<string>(userNameKey, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -91,7 +97,8 @@ namespace BookAStar
|
|
|
|
|
|
|
|
|
|
public static string GoogleRegId
|
|
|
|
|
{
|
|
|
|
|
set {
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
var oldregid = GoogleRegId;
|
|
|
|
|
AppSettings.AddOrUpdateValue<string>(GoogleRegIdKey, value);
|
|
|
|
|
// TODO If it changed, and there's an identified user,
|
|
|
|
|
@ -128,7 +135,9 @@ namespace BookAStar
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static User CurrentUser { get
|
|
|
|
|
public static User CurrentUser
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
var uname = UserName;
|
|
|
|
|
if (uname == null) return null;
|
|
|
|
|
@ -169,13 +178,16 @@ namespace BookAStar
|
|
|
|
|
return AccountList.FirstOrDefault(a => a.UserName == username);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static bool PushNotifications {
|
|
|
|
|
get {
|
|
|
|
|
public static bool PushNotifications
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return AppSettings.GetValueOrDefault<bool>(
|
|
|
|
|
PushNotificationsKey,
|
|
|
|
|
PushNotificationsDefault);
|
|
|
|
|
}
|
|
|
|
|
set {
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
// TODO Stop Broadcast receiver
|
|
|
|
|
AppSettings.AddOrUpdateValue<bool>(
|
|
|
|
|
PushNotificationsKey,
|
|
|
|
|
@ -224,8 +236,10 @@ namespace BookAStar
|
|
|
|
|
return AppSettings.GetValueOrDefault<double>(MusicalKey + key, MusicalDefault[key]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Dictionary<string,double> Musical {
|
|
|
|
|
get {
|
|
|
|
|
public static Dictionary<string, double> Musical
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return musical;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -237,5 +251,36 @@ namespace BookAStar
|
|
|
|
|
return environ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Use a sub-key to make persist different tables with the same definition.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <typeparam name="V"></typeparam>
|
|
|
|
|
/// <param name="collection"></param>
|
|
|
|
|
/// <param name="subKey"></param>
|
|
|
|
|
public static void Populate<V>(this IList<V> collection, string subKey = null)
|
|
|
|
|
{
|
|
|
|
|
var key = $"{EntityDataSettingsPrefix}/{subKey}/{typeof(V).FullName}";
|
|
|
|
|
var data = AppSettings.GetValueOrDefault<string>(key, null);
|
|
|
|
|
if (data != null)
|
|
|
|
|
{
|
|
|
|
|
var items = JsonConvert.DeserializeObject<IList<V>>(data);
|
|
|
|
|
if (items != null)
|
|
|
|
|
foreach (var item in items)
|
|
|
|
|
collection.Add(item);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Saves a list
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <typeparam name="V"></typeparam>
|
|
|
|
|
/// <param name="collection"></param>
|
|
|
|
|
/// <param name="subKey"></param>
|
|
|
|
|
public static void SaveCollection<V>(this IList<V> collection, string subKey=null)
|
|
|
|
|
{
|
|
|
|
|
if (collection == null) return;
|
|
|
|
|
var key = $"{EntityDataSettingsPrefix}/{subKey}/{typeof(V).FullName}";
|
|
|
|
|
AppSettings.AddOrUpdateValue(key, JsonConvert.SerializeObject(collection));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|