mirror of
https://git.alee14.me/shiftos-archive/ShiftOS_TheReturn.git
synced 2025-01-23 02:12:14 +00:00
Notification backend.
This commit is contained in:
parent
bdd8e61600
commit
894c2275d9
2 changed files with 89 additions and 0 deletions
88
ShiftOS_TheReturn/NotificationDaemon.cs
Normal file
88
ShiftOS_TheReturn/NotificationDaemon.cs
Normal file
|
@ -0,0 +1,88 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Newtonsoft.Json;
|
||||
using ShiftOS.Objects.ShiftFS;
|
||||
|
||||
namespace ShiftOS.Engine
|
||||
{
|
||||
public static class NotificationDaemon
|
||||
{
|
||||
public static Notification[] GetAllFromFile()
|
||||
{
|
||||
Notification[] notes = { };
|
||||
if (Utils.FileExists(Paths.GetPath("notifications.dat")))
|
||||
{
|
||||
notes = JsonConvert.DeserializeObject<Notification[]>(Utils.ReadAllText(Paths.GetPath("notifications.dat")));
|
||||
}
|
||||
return notes;
|
||||
}
|
||||
|
||||
internal static void WriteNotes(Notification[] notes)
|
||||
{
|
||||
Utils.WriteAllText(Paths.GetPath("notifications.dat"), JsonConvert.SerializeObject(notes, Formatting.Indented));
|
||||
}
|
||||
|
||||
public static void AddNotification(NotificationType note, object data)
|
||||
{
|
||||
var lst = new List<Notification>(GetAllFromFile());
|
||||
lst.Add(new Engine.Notification(note, data));
|
||||
WriteNotes(lst.ToArray());
|
||||
}
|
||||
|
||||
|
||||
public static void MarkRead(int note)
|
||||
{
|
||||
var notes = GetAllFromFile();
|
||||
if (note >= notes.Length || note < 0)
|
||||
throw new ArgumentOutOfRangeException("note", new Exception("You cannot mark a notification that does not exist as read."));
|
||||
|
||||
notes[note].Read = true;
|
||||
WriteNotes(notes);
|
||||
}
|
||||
}
|
||||
|
||||
public struct Notification
|
||||
{
|
||||
public Notification(NotificationType t, object data)
|
||||
{
|
||||
Type = t;
|
||||
Data = data;
|
||||
Read = false;
|
||||
Timestamp = DateTime.Now;
|
||||
}
|
||||
|
||||
public bool Read { get; internal set; }
|
||||
public NotificationType Type { get; private set; }
|
||||
public object Data { get; private set; }
|
||||
public DateTime Timestamp { get; private set; }
|
||||
}
|
||||
|
||||
public enum NotificationType : byte
|
||||
{
|
||||
Generic = 0x00,
|
||||
MemoReceived = 0x10,
|
||||
MemoSent = 0x11,
|
||||
DownloadStarted = 0x20,
|
||||
DownloadComplete = 0x21,
|
||||
CodepointsReceived = 0x30,
|
||||
CodepointsSent = 0x31,
|
||||
ShopPurchase = 0x40,
|
||||
LegionInvite = 0x50,
|
||||
LegionKick = 0x51,
|
||||
LegionBan = 0x52,
|
||||
ChatBan = 0x60,
|
||||
MUDAnnouncement = 0x70,
|
||||
MUDMaintenance = 0x71,
|
||||
NewShiftOSUnstable = 0x72,
|
||||
NewShiftOSStable = 0x73,
|
||||
NewAppveyor = 0x74,
|
||||
CriticalBugwatch = 0x75,
|
||||
NewDeveloper = 0x76,
|
||||
NewShiftOSVideo = 0x77,
|
||||
NewShiftOSStream = 0x78,
|
||||
SavePurge = 0x79,
|
||||
}
|
||||
}
|
|
@ -132,6 +132,7 @@
|
|||
<Compile Include="Infobox.cs" />
|
||||
<Compile Include="IShiftOSWindow.cs" />
|
||||
<Compile Include="Localization.cs" />
|
||||
<Compile Include="NotificationDaemon.cs" />
|
||||
<Compile Include="OutOfBoxExperience.cs" />
|
||||
<Compile Include="Paths.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
|
|
Loading…
Reference in a new issue