-
Notifications
You must be signed in to change notification settings - Fork 1
/
SubscriptionManager.cs
137 lines (123 loc) · 4.2 KB
/
SubscriptionManager.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Windows.Storage;
using Windows.Storage.Pickers;
public static class SubscriptionManager
{
private const string SubscriptionsFileName = "subscriptions.txt";
public static List<string> SubscribedAuthors { get; private set; }
static SubscriptionManager()
{
SubscribedAuthors = new List<string>();
LoadSubscriptions();
}
public static void Subscribe(string channelId)
{
if (!SubscribedAuthors.Contains(channelId))
{
SubscribedAuthors.Add(channelId);
SaveSubscriptions();
}
}
public static void Unsubscribe(string channelId)
{
if (SubscribedAuthors.Contains(channelId))
{
SubscribedAuthors.Remove(channelId);
SaveSubscriptions();
}
}
public static bool IsSubscribed(string channelId)
{
return SubscribedAuthors.Contains(channelId);
}
public static async Task ImportSubscriptionsFromCsv(StorageFile file)
{
try
{
using (var stream = await file.OpenStreamForReadAsync())
using (var reader = new StreamReader(stream))
{
string line;
bool isFirstLine = true;
while ((line = reader.ReadLine()) != null)
{
if (isFirstLine)
{
isFirstLine = false;
continue;
}
var columns = line.Split(',');
if (columns.Length >= 1)
{
string channelId = columns[0].Trim();
Subscribe(channelId);
}
}
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("Error importing subscriptions: " + ex.Message);
}
}
public static void SaveSubscriptions()
{
try
{
var folder = ApplicationData.Current.LocalFolder;
var file = folder.CreateFileAsync(SubscriptionsFileName, CreationCollisionOption.ReplaceExisting).AsTask().Result;
var serializedIds = string.Join(",", SubscribedAuthors);
FileIO.WriteTextAsync(file, serializedIds).AsTask().Wait();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("Error saving subscriptions: " + ex.Message);
}
}
public static void LoadSubscriptions()
{
try
{
var folder = ApplicationData.Current.LocalFolder;
var file = folder.GetFileAsync(SubscriptionsFileName).AsTask().Result;
var serializedIds = FileIO.ReadTextAsync(file).AsTask().Result;
if (!string.IsNullOrEmpty(serializedIds))
{
SubscribedAuthors = serializedIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
System.Diagnostics.Debug.WriteLine("Subscriptions successfully loaded.");
}
else
{
System.Diagnostics.Debug.WriteLine("No subscriptions found in the file.");
SubscribedAuthors = new List<string>();
}
}
catch (FileNotFoundException)
{
System.Diagnostics.Debug.WriteLine("No subscriptions file found.");
SubscribedAuthors = new List<string>();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("Error loading subscriptions: " + ex.Message);
SubscribedAuthors = new List<string>();
}
}
public static void ClearSubscriptions()
{
try
{
SubscribedAuthors.Clear();
SaveSubscriptions();
System.Diagnostics.Debug.WriteLine("All subscriptions have been cleared.");
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("Error clearing subscriptions: " + ex.Message);
}
}
}