Oh thank you. Any improvement is highly welcome, i have refactor it to:
public static string StoredDatesList
{
get => Preferences.Get(nameof(StoredDatesList), string.Empty);
set => Preferences.Set(nameof(StoredDatesList), value);
}
public static async Task GetDraws(Uri url, string date)
{
var StoredDates = JsonConvert.DeserializeObject>(StoredDatesList);
var contents = string.Empty;
var current = Connectivity.NetworkAccess;
var client = new HttpClient();
if (StoredDates != null)
if (StoredDates.ContainsKey(date))
{
contents = StoredDates\[date\];
}
else
{
if (current != NetworkAccess.Internet)
return Helpers.Settings.Common\_Error\_NoInternetConnection;
contents = await DownloadResults(url, date, StoredDates, contents, client);
}
else
{
if (current != NetworkAccess.Internet)
return Helpers.Settings.Common\_Error\_NoInternetConnection;
StoredDates = new Dictionary();
contents = await DownloadResults(url, date, StoredDates, contents, client);
}
return contents;
}
private static async Task DownloadResults(Uri url, string date, Dictionary StoredDates, string contents, HttpClient client)
{
contents = await client.GetStringAsync(url);
var res2 = JsonConvert.DeserializeObject(contents.ToString());
if (180 == res2.content.Count)
{
StoredDates.Add(date, contents);
StoredDatesList = JsonConvert.SerializeObject(StoredDates, Formatting.Indented);
}
return contents;
}
...
public const string Common_Error_NoInternetConnection = "Error_NoInternetConnection";
So i would check every time if the return sting is equal to Common_Error_NoInternetConnection, Does this sounds like a solid idea?