diff --git a/src/ElectronBot.Braincase.Core/Contracts/Services/EmojisFile/IEmojisFileService.cs b/src/ElectronBot.Braincase.Core/Contracts/Services/EmojisFile/IEmojisFileService.cs
index a46cd18..7ed570c 100644
--- a/src/ElectronBot.Braincase.Core/Contracts/Services/EmojisFile/IEmojisFileService.cs
+++ b/src/ElectronBot.Braincase.Core/Contracts/Services/EmojisFile/IEmojisFileService.cs
@@ -23,7 +23,7 @@ public interface IEmojisFileService
///
///
///
- Task> GetEmojisFileListAsync(int pageIndex, int pageSize);
+ Task> GetEmojisFileListAsync(int pageIndex, int pageSize);
///
/// 保存表情文件
@@ -50,5 +50,5 @@ public interface IEmojisFileService
///
///
///
- Task SaveEmojisAsync(EmoticonAction emoticonAction);
+ Task SaveEmojisAsync(EmoticonAction emoticonAction);
}
diff --git a/src/ElectronBot.Braincase.Core/Models/Emojis/EmoticonAction.cs b/src/ElectronBot.Braincase.Core/Models/Emojis/EmoticonAction.cs
index e6c5726..701a632 100644
--- a/src/ElectronBot.Braincase.Core/Models/Emojis/EmoticonAction.cs
+++ b/src/ElectronBot.Braincase.Core/Models/Emojis/EmoticonAction.cs
@@ -1,4 +1,5 @@
using CommunityToolkit.Mvvm.ComponentModel;
+using Verdure.Braincase.Core.Models.Emojis.Enums;
namespace ElectronBot.Braincase.Models;
public class EmoticonAction : ObservableRecipient
@@ -28,10 +29,10 @@ public class EmoticonAction : ObservableRecipient
{
get; set;
} = "";
- public EmojisType EmojisType
+ public string Type
{
get; set;
- }
+ } = EmojisFileType.Default;
public string EmojisActionPath
{
get; set;
@@ -47,10 +48,4 @@ public class EmoticonAction : ObservableRecipient
get => _hasAction;
set => SetProperty(ref _hasAction, value);
}
-}
-
-public enum EmojisType
-{
- Default = 1,
- Custom = 2
}
\ No newline at end of file
diff --git a/src/ElectronBot.Braincase.Core/Models/Emojis/EmoticonActionModel.cs b/src/ElectronBot.Braincase.Core/Models/Emojis/EmoticonActionModel.cs
new file mode 100644
index 0000000..86f647d
--- /dev/null
+++ b/src/ElectronBot.Braincase.Core/Models/Emojis/EmoticonActionModel.cs
@@ -0,0 +1,56 @@
+using Verdure.Braincase.Core.Models.Emojis.Enums;
+
+namespace ElectronBot.Braincase.Models;
+public class EmoticonActionModel : IDisposable
+{
+ public string NameId
+ {
+ get; set;
+ } = string.Empty;
+
+ public string Name
+ {
+ get; set;
+ } = string.Empty;
+
+ public string Desc
+ {
+ get; set;
+ } = string.Empty;
+
+ public Stream? Avatar
+ {
+ get; set;
+ }
+
+ public string EmojisVideoPath
+ {
+ get; set;
+ } = string.Empty;
+ public string Type
+ {
+ get; set;
+ } = EmojisFileType.Default;
+
+ public string EmojisActionPath
+ {
+ get; set;
+ } = string.Empty;
+
+ public string EmojisAuthor
+ {
+ get;
+ set;
+ } = string.Empty;
+
+ public bool HasAction
+ {
+ get;
+ set;
+ }
+
+ public void Dispose()
+ {
+ Avatar?.Dispose();
+ }
+}
\ No newline at end of file
diff --git a/src/ElectronBot.Braincase.Core/Models/Emojis/Enums/EmojisFileType.cs b/src/ElectronBot.Braincase.Core/Models/Emojis/Enums/EmojisFileType.cs
new file mode 100644
index 0000000..d6161fc
--- /dev/null
+++ b/src/ElectronBot.Braincase.Core/Models/Emojis/Enums/EmojisFileType.cs
@@ -0,0 +1,7 @@
+namespace Verdure.Braincase.Core.Models.Emojis.Enums;
+public class EmojisFileType
+{
+ public const string Default = "Default";
+
+ public const string Custom = "Custom";
+}
diff --git a/src/ElectronBot.Braincase/Constants.cs b/src/ElectronBot.Braincase/Constants.cs
index 3c8e08d..5fd7511 100644
--- a/src/ElectronBot.Braincase/Constants.cs
+++ b/src/ElectronBot.Braincase/Constants.cs
@@ -86,7 +86,7 @@ public class Constants
NameId="left",
Avatar = "ms-appx:///Assets/Emoji/left.png",
Desc ="LeftName".GetLocalized(),
- EmojisType = EmojisType.Default,
+ Type = EmojisFileType.Default,
EmojisActionPath = "left.json",
HasAction = true
},
@@ -96,7 +96,7 @@ public class Constants
NameId="right",
Avatar = "ms-appx:///Assets/Emoji/right.png",
Desc ="RightName".GetLocalized(),
- EmojisType = EmojisType.Default,
+ Type = EmojisFileType.Default,
EmojisActionPath = "right.json",
HasAction = true
},
@@ -106,7 +106,7 @@ public class Constants
NameId="normal",
Avatar = "ms-appx:///Assets/Emoji/normal.png",
Desc ="NormalName".GetLocalized(),
- EmojisType = EmojisType.Default,
+ Type = EmojisFileType.Default,
EmojisActionPath = "normal.json",
HasAction = true
},
@@ -116,7 +116,7 @@ public class Constants
NameId="normal",
Avatar = "ms-appx:///Assets/Emoji/normal.png",
Desc ="NormalName".GetLocalized(),
- EmojisType = EmojisType.Default,
+ Type = EmojisFileType.Default,
EmojisActionPath = "normal.json",
HasAction = true
},
@@ -126,7 +126,7 @@ public class Constants
NameId="anger",
Avatar = "ms-appx:///Assets/Emoji/anger.png",
Desc ="AngerName".GetLocalized(),
- EmojisType = EmojisType.Default,
+ Type = EmojisFileType.Default,
EmojisActionPath = "anger.json",
HasAction = true
},
@@ -136,7 +136,7 @@ public class Constants
NameId="disdain",
Avatar = "ms-appx:///Assets/Emoji/disdain.png",
Desc ="DisdainName".GetLocalized(),
- EmojisType = EmojisType.Default,
+ Type = EmojisFileType.Default,
EmojisActionPath = "disdain.json",
HasAction = true
},
@@ -146,7 +146,7 @@ public class Constants
NameId="excited",
Avatar = "ms-appx:///Assets/Emoji/excited.png",
Desc ="ExcitedName".GetLocalized(),
- EmojisType = EmojisType.Default,
+ Type = EmojisFileType.Default,
EmojisActionPath = "defaultaction.json",
HasAction = true
},
@@ -156,7 +156,7 @@ public class Constants
NameId="fear",
Avatar = "ms-appx:///Assets/Emoji/fear.png",
Desc ="FearName".GetLocalized(),
- EmojisType = EmojisType.Default,
+ Type = EmojisFileType.Default,
EmojisActionPath = "defaultaction.json",
HasAction = true
},
@@ -166,7 +166,7 @@ public class Constants
NameId="sad",
Avatar = "ms-appx:///Assets/Emoji/sad.png",
Desc ="SadName".GetLocalized(),
- EmojisType = EmojisType.Default,
+ Type = EmojisFileType.Default,
EmojisActionPath = "defaultaction.json",
HasAction = true
},
@@ -176,7 +176,7 @@ public class Constants
NameId="hello",
Avatar = "ms-appx:///Assets/Emoji/hello.jpg",
Desc ="HelloName".GetLocalized(),
- EmojisType = EmojisType.Default,
+ Type = EmojisFileType.Default,
EmojisActionPath = "hello.json",
HasAction = true
},
@@ -186,7 +186,7 @@ public class Constants
NameId="goodbye",
Avatar = "ms-appx:///Assets/Emoji/Goodbye.jpg",
Desc ="GoodbyeName".GetLocalized(),
- EmojisType = EmojisType.Default,
+ Type = EmojisFileType.Default,
EmojisActionPath = "goodbye.json",
HasAction = true
}
diff --git a/src/ElectronBot.Braincase/Helpers/ElectronBotHelper.cs b/src/ElectronBot.Braincase/Helpers/ElectronBotHelper.cs
index 0957ba4..6b57cc1 100644
--- a/src/ElectronBot.Braincase/Helpers/ElectronBotHelper.cs
+++ b/src/ElectronBot.Braincase/Helpers/ElectronBotHelper.cs
@@ -359,7 +359,7 @@ public class ElectronBotHelper
{
var path = string.Empty;
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
path = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{emojis.EmojisActionPath}";
}
@@ -388,7 +388,7 @@ public class ElectronBotHelper
string? videoPath;
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
videoPath = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{emojis.NameId}.mp4";
}
@@ -431,7 +431,7 @@ public class ElectronBotHelper
{
var path = string.Empty;
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
path = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{emojis.EmojisActionPath}";
}
@@ -460,7 +460,7 @@ public class ElectronBotHelper
string? videoPath;
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
videoPath = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{emojis.NameId}.mp4";
}
diff --git a/src/ElectronBot.Braincase/Models/EmojisFileManifest.cs b/src/ElectronBot.Braincase/Models/EmojisFileManifest.cs
index 6464084..f26da81 100644
--- a/src/ElectronBot.Braincase/Models/EmojisFileManifest.cs
+++ b/src/ElectronBot.Braincase/Models/EmojisFileManifest.cs
@@ -1,4 +1,4 @@
-using ElectronBot.Braincase.Models;
+using Verdure.Braincase.Core.Models.Emojis.Enums;
namespace Models;
public class EmojisFileManifest
@@ -23,9 +23,15 @@ public class EmojisFileManifest
get;
set;
}
- public EmojisType EmojisType
+ public int EmojisType
{
get;
set;
}
+
+ public string Type
+ {
+ get;
+ set;
+ } = EmojisFileType.Custom;
}
diff --git a/src/ElectronBot.Braincase/Services/EmojisFile/EmojisFileService.cs b/src/ElectronBot.Braincase/Services/EmojisFile/EmojisFileService.cs
index abb738e..dc1f43a 100644
--- a/src/ElectronBot.Braincase/Services/EmojisFile/EmojisFileService.cs
+++ b/src/ElectronBot.Braincase/Services/EmojisFile/EmojisFileService.cs
@@ -6,6 +6,7 @@ using ElectronBot.Braincase;
using ElectronBot.Braincase.Helpers;
using ElectronBot.Braincase.Models;
using Models;
+using Verdure.Braincase.Core.Models.Emojis.Enums;
using Verdure.WinUI.Common.Helpers;
using Windows.ApplicationModel;
using Windows.Storage;
@@ -40,7 +41,7 @@ public class EmojisFileService : IEmojisFileService
NameId = emoticonAction.NameId,
Description = emoticonAction.Desc,
HasAction = emoticonAction.HasAction,
- EmojisType = emoticonAction.EmojisType
+ Type = emoticonAction.Type
};
@@ -61,7 +62,7 @@ public class EmojisFileService : IEmojisFileService
var destinationFile = await destinationFolder
.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
- if (emoticonAction != null && emoticonAction.EmojisType == EmojisType.Default)
+ if (emoticonAction != null && emoticonAction.Type == EmojisFileType.Default)
{
var videoPath = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{emoticonAction.NameId}.mp4";
filePaths.Add(videoPath);
@@ -70,7 +71,7 @@ public class EmojisFileService : IEmojisFileService
var actionPath = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\defaultaction.json";
filePaths.Add(actionPath);
}
- else if (emoticonAction != null && emoticonAction.EmojisType == EmojisType.Custom)
+ else if (emoticonAction != null && emoticonAction.Type == EmojisFileType.Custom)
{
filePaths.Add(emoticonAction.Avatar);
filePaths.Add(emoticonAction.EmojisVideoPath);
@@ -113,7 +114,7 @@ public class EmojisFileService : IEmojisFileService
NameId = emoticonAction.NameId,
Description = emoticonAction.Desc,
HasAction = emoticonAction.HasAction,
- EmojisType = emoticonAction.EmojisType
+ Type = emoticonAction.Type
};
@@ -130,7 +131,7 @@ public class EmojisFileService : IEmojisFileService
var destinationFile = await destinationFolder
.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
- if (emoticonAction != null && emoticonAction.EmojisType == EmojisType.Default)
+ if (emoticonAction != null && emoticonAction.Type == EmojisFileType.Default)
{
var videoPath = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{emoticonAction.NameId}.mp4";
filePaths.Add(videoPath);
@@ -139,7 +140,7 @@ public class EmojisFileService : IEmojisFileService
var actionPath = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\defaultaction.json";
filePaths.Add(actionPath);
}
- else if (emoticonAction != null && emoticonAction.EmojisType == EmojisType.Custom)
+ else if (emoticonAction != null && emoticonAction.Type == EmojisFileType.Custom)
{
filePaths.Add(emoticonAction.Avatar);
filePaths.Add(emoticonAction.EmojisVideoPath);
@@ -168,7 +169,8 @@ public class EmojisFileService : IEmojisFileService
}
public Task> GetEmojisFileListAsync(int pageIndex, int pageSize) => throw new NotImplementedException();
- public Task SaveEmojisAsync(EmoticonAction emoticonAction) => throw new NotImplementedException();
+ public Task SaveEmojisAsync(EmoticonAction emoticonAction) => throw new NotImplementedException();
public Task SaveEmojisFileAsync(Stream stream, string fileName, string fileType = ".mp4") => throw new NotImplementedException();
public Task SaveEmojisFileAsync(string path, string fileName, string fileType = ".mp4") => throw new NotImplementedException();
+ Task> IEmojisFileService.GetEmojisFileListAsync(int pageIndex, int pageSize) => throw new NotImplementedException();
}
diff --git a/src/ElectronBot.Braincase/Services/eShop/EmojiseShopService.cs b/src/ElectronBot.Braincase/Services/eShop/EmojiseShopService.cs
index f85b810..84c0ccb 100644
--- a/src/ElectronBot.Braincase/Services/eShop/EmojiseShopService.cs
+++ b/src/ElectronBot.Braincase/Services/eShop/EmojiseShopService.cs
@@ -82,7 +82,7 @@ public class EmojiseShopService : IEmojiseShopService
action.Name = emojisFileInfo.Name;
action.NameId = emojisFileInfo.NameId;
action.Desc = emojisFileInfo.Description;
- action.EmojisType = emojisFileInfo.EmojisType;
+ action.Type = emojisFileInfo.Type;
action.HasAction = emojisFileInfo.HasAction;
}
else
diff --git a/src/ElectronBot.Braincase/Usings.cs b/src/ElectronBot.Braincase/Usings.cs
index 90e1b2e..1d94611 100644
--- a/src/ElectronBot.Braincase/Usings.cs
+++ b/src/ElectronBot.Braincase/Usings.cs
@@ -5,3 +5,4 @@ global using Verdure.Braincase.Core.Contracts;
global using Verdure.Braincase.Core.Helpers;
global using Verdure.Braincase.Core.Services;
global using Verdure.Braincase.Core.Models;
+global using Verdure.Braincase.Core.Models.Emojis.Enums;
diff --git a/src/ElectronBot.Braincase/ViewModels/GamepadViewModel.cs b/src/ElectronBot.Braincase/ViewModels/GamepadViewModel.cs
index 5a2d70c..65ac20e 100644
--- a/src/ElectronBot.Braincase/ViewModels/GamepadViewModel.cs
+++ b/src/ElectronBot.Braincase/ViewModels/GamepadViewModel.cs
@@ -207,7 +207,7 @@ public class GamepadViewModel : ObservableRecipient, INavigationAware
string? videoPath;
- if (action.EmojisType == EmojisType.Default)
+ if (action.Type == EmojisFileType.Default)
{
videoPath = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{action.NameId}.mp4";
}
diff --git a/src/ElectronBot.Braincase/ViewModels/MainViewModel.cs b/src/ElectronBot.Braincase/ViewModels/MainViewModel.cs
index 06e6ccf..78e1a98 100644
--- a/src/ElectronBot.Braincase/ViewModels/MainViewModel.cs
+++ b/src/ElectronBot.Braincase/ViewModels/MainViewModel.cs
@@ -22,6 +22,7 @@ using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Services;
using Verdure.Braincase.Core.Models;
+using Verdure.Braincase.Core.Models.Emojis.Enums;
using Verdure.WinUI.Common.Helpers;
using Verdure.WinUI.Common.Models;
using Verdure.WinUI.Common.Services;
@@ -310,7 +311,7 @@ public partial class MainViewModel : ObservableRecipient, INavigationAware
var list = (await _localSettingsService
.ReadSettingAsync>(Constants.EmojisActionListKey)) ?? new List();
- if (!list.Any(a => a.EmojisType == EmojisType.Default))
+ if (!list.Any(a => a.Type == EmojisFileType.Default))
{
var emoticonActions = Constants.EMOJI_ACTION_LIST;
await _localSettingsService.SaveSettingAsync(Constants.EmojisActionListKey, emoticonActions.ToList());
@@ -333,7 +334,7 @@ public partial class MainViewModel : ObservableRecipient, INavigationAware
{
var path = string.Empty;
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
path = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{emojis.EmojisActionPath}";
}
@@ -362,7 +363,7 @@ public partial class MainViewModel : ObservableRecipient, INavigationAware
string? videoPath;
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
videoPath = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{emojis.NameId}.mp4";
}
@@ -399,7 +400,7 @@ public partial class MainViewModel : ObservableRecipient, INavigationAware
var list = (await _localSettingsService
.ReadSettingAsync>(Constants.EmojisActionListKey)) ?? new List();
- if (!list.Any(a => a.EmojisType == EmojisType.Default))
+ if (!list.Any(a => a.Type == EmojisFileType.Default))
{
var emoticonActions = Constants.EMOJI_ACTION_LIST;
await _localSettingsService.SaveSettingAsync(Constants.EmojisActionListKey, emoticonActions.ToList());
@@ -422,7 +423,7 @@ public partial class MainViewModel : ObservableRecipient, INavigationAware
{
var path = string.Empty;
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
path = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{emojis.EmojisActionPath}";
}
@@ -451,7 +452,7 @@ public partial class MainViewModel : ObservableRecipient, INavigationAware
string? videoPath;
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
videoPath = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{emojis.NameId}.mp4";
}
diff --git a/src/ElectronBot.Braincase/ViewModels/Video/AddEmojisDialogViewModel.cs b/src/ElectronBot.Braincase/ViewModels/Video/AddEmojisDialogViewModel.cs
index b065dc2..253123c 100644
--- a/src/ElectronBot.Braincase/ViewModels/Video/AddEmojisDialogViewModel.cs
+++ b/src/ElectronBot.Braincase/ViewModels/Video/AddEmojisDialogViewModel.cs
@@ -89,7 +89,7 @@ public partial class AddEmojisDialogViewModel : ObservableRecipient
Name = EmojisName,
NameId = EmojisNameId,
EmojisVideoPath = EmojisVideoUrl,
- EmojisType = EmojisType.Custom,
+ Type = EmojisFileType.Custom,
EmojisActionPath = EmojisActionPath,
EmojisAuthor = EmojisAuthor
};
diff --git a/src/ElectronBot.Braincase/ViewModels/Video/EmojisEditViewModel.Command.cs b/src/ElectronBot.Braincase/ViewModels/Video/EmojisEditViewModel.Command.cs
index 8cb5ab2..fad8811 100644
--- a/src/ElectronBot.Braincase/ViewModels/Video/EmojisEditViewModel.Command.cs
+++ b/src/ElectronBot.Braincase/ViewModels/Video/EmojisEditViewModel.Command.cs
@@ -6,6 +6,7 @@ using Controls;
using ElectronBot.Braincase.Helpers;
using ElectronBot.Braincase.Models;
using Microsoft.UI.Xaml.Controls;
+using Microsoft.UI.Xaml.Media.Imaging;
using Models;
using Verdure.WinUI.Common.Helpers;
using Verdure.WinUI.Common.Models;
@@ -31,7 +32,7 @@ public partial class EmojisEditViewModel : ObservableRecipient
{
try
{
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
ToastHelper.SendToast("默认表情禁止导出", TimeSpan.FromSeconds(3));
return;
@@ -113,7 +114,7 @@ public partial class EmojisEditViewModel : ObservableRecipient
action.Name = emojisFileInfo.Name;
action.NameId = emojisFileInfo.NameId;
action.Desc = emojisFileInfo.Description;
- action.EmojisType = emojisFileInfo.EmojisType;
+ action.Type = emojisFileInfo.Type;
action.HasAction = emojisFileInfo.HasAction;
}
else
@@ -143,10 +144,33 @@ public partial class EmojisEditViewModel : ObservableRecipient
}
}
- await _emojisFileService.SaveEmojisAsync(action);
+ var emojiModel = await _emojisFileService.SaveEmojisAsync(action);
+ if (emojiModel != null)
+ {
+ var data = new EmoticonActionUIModel
+ {
+ Name = emojiModel.Name,
+ NameId = emojiModel.NameId,
+ Desc = emojiModel.Desc,
+ EmojisActionPath = emojiModel.EmojisActionPath,
+ EmojisAuthor = emojiModel.EmojisAuthor,
+ EmojisVideoPath = emojiModel.EmojisVideoPath,
+ HasAction = emojiModel.HasAction,
+ Type = emojiModel.Type
+ };
- Actions.Add(action);
+ if (emojiModel.Avatar != null)
+ {
+ var bitmapImage = new BitmapImage();
+
+ await bitmapImage.SetSourceAsync(emojiModel.Avatar.AsRandomAccessStream());
+
+ data.Avatar = bitmapImage;
+ }
+
+ Emojis.Add(data);
+ }
await storageFolder.DeleteAsync();
}
@@ -212,7 +236,7 @@ public partial class EmojisEditViewModel : ObservableRecipient
{
try
{
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
ToastHelper.SendToast("默认表情禁止删除", TimeSpan.FromSeconds(3));
return;
@@ -275,7 +299,7 @@ public partial class EmojisEditViewModel : ObservableRecipient
{
var path = string.Empty;
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
path = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{emojis.EmojisActionPath}";
}
@@ -304,7 +328,7 @@ public partial class EmojisEditViewModel : ObservableRecipient
string? videoPath;
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
videoPath = Package.Current.InstalledLocation.Path + $"\\Assets\\Emoji\\{emojis.NameId}.mp4";
}
@@ -360,7 +384,7 @@ public partial class EmojisEditViewModel : ObservableRecipient
{
if (obj is EmoticonAction emojis)
{
- if (emojis.EmojisType == EmojisType.Default)
+ if (emojis.Type == EmojisFileType.Default)
{
ToastHelper.SendToast("默认表情不能分享", TimeSpan.FromSeconds(3));
return;
@@ -415,7 +439,7 @@ public partial class EmojisEditViewModel : ObservableRecipient
Desc = EmojisDesc,
Name = EmojisName,
NameId = EmojisNameId,
- EmojisType = EmojisType.Custom
+ Type = EmojisFileType.Custom
});
}
diff --git a/src/ElectronBot.Braincase/ViewModels/Video/EmojisEditViewModel.Properties.cs b/src/ElectronBot.Braincase/ViewModels/Video/EmojisEditViewModel.Properties.cs
index 73cea74..d5bbaf8 100644
--- a/src/ElectronBot.Braincase/ViewModels/Video/EmojisEditViewModel.Properties.cs
+++ b/src/ElectronBot.Braincase/ViewModels/Video/EmojisEditViewModel.Properties.cs
@@ -4,12 +4,17 @@ using System.Collections.ObjectModel;
using System.Text;
using CommunityToolkit.Mvvm.ComponentModel;
using ElectronBot.Braincase.Models;
+using Verdure.WinUI.Common.Models;
namespace ElectronBot.Braincase.ViewModels;
public partial class EmojisEditViewModel : ObservableRecipient
{
[ObservableProperty]
private ObservableCollection _actions = new();
+
+ [ObservableProperty]
+ private ObservableCollection _emojis = new();
+
///
/// 表情名称
///
diff --git a/src/ElectronBot.Braincase/ViewModels/Video/EmojisEditViewModel.cs b/src/ElectronBot.Braincase/ViewModels/Video/EmojisEditViewModel.cs
index f340a26..8c0cc50 100644
--- a/src/ElectronBot.Braincase/ViewModels/Video/EmojisEditViewModel.cs
+++ b/src/ElectronBot.Braincase/ViewModels/Video/EmojisEditViewModel.cs
@@ -147,9 +147,9 @@ public partial class EmojisEditViewModel : ObservableRecipient
[RelayCommand]
public Task OnLoadedAsync()
{
- Actions.Clear();
+ Emojis.Clear();
// IncrementalLoadingCollection can be bound to a GridView or a ListView. In this case it is a ListView called PeopleListView.
- Actions = new IncrementalLoadingCollection(Ioc.Default.GetRequiredService());
+ Emojis = new IncrementalLoadingCollection(Ioc.Default.GetRequiredService());
return Task.CompletedTask;
}
}
diff --git a/src/ElectronBot.Braincase/Views/EmojisEditPage.xaml b/src/ElectronBot.Braincase/Views/EmojisEditPage.xaml
index e29b96e..4bbd9ae 100644
--- a/src/ElectronBot.Braincase/Views/EmojisEditPage.xaml
+++ b/src/ElectronBot.Braincase/Views/EmojisEditPage.xaml
@@ -9,6 +9,7 @@
xmlns:ic="using:Microsoft.Xaml.Interactions.Core"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:models="using:ElectronBot.Braincase.Models"
+ xmlns:uiModels="using:Verdure.WinUI.Common.Models"
mc:Ignorable="d">
@@ -19,7 +20,7 @@
-
+
-
+ Stretch="UniformToFill" />
diff --git a/src/Verdure.Braincase.DataStorage/Mappers/EmojisMappers.cs b/src/Verdure.Braincase.DataStorage/Mappers/EmojisMappers.cs
index 8fbfd6b..c898198 100644
--- a/src/Verdure.Braincase.DataStorage/Mappers/EmojisMappers.cs
+++ b/src/Verdure.Braincase.DataStorage/Mappers/EmojisMappers.cs
@@ -14,7 +14,7 @@ public static class EmojisMappers
Desc = model.Desc,
Avatar = model.Avatar,
EmojisVideoPath = model.EmojisVideoPath,
- Type = model.EmojisType.ToString(),
+ Type = model.Type,
EmojisActionJson = model.EmojisActionPath,
EmojisAuthor = model.EmojisAuthor,
HasAction = model.HasAction
@@ -22,7 +22,7 @@ public static class EmojisMappers
};
}
- public static EmoticonAction ToModel(this EmojisDocument doc)
+ public static EmoticonAction ToModel1(this EmojisDocument doc)
{
return new EmoticonAction
{
@@ -31,7 +31,22 @@ public static class EmojisMappers
Desc = doc.Desc,
Avatar = doc.Avatar,
EmojisVideoPath = doc.EmojisVideoPath,
- EmojisType = Enum.Parse(doc.Type),
+ Type = doc.Type,
+ EmojisActionPath = doc.EmojisActionJson,
+ EmojisAuthor = doc.EmojisAuthor,
+ HasAction = doc.HasAction
+ };
+ }
+
+ public static EmoticonActionModel ToModel(this EmojisDocument doc)
+ {
+ return new EmoticonActionModel
+ {
+ Name = doc.Name,
+ NameId = doc.NameId,
+ Desc = doc.Desc,
+ EmojisVideoPath = doc.EmojisVideoPath,
+ Type = doc.Type,
EmojisActionPath = doc.EmojisActionJson,
EmojisAuthor = doc.EmojisAuthor,
HasAction = doc.HasAction
diff --git a/src/Verdure.Braincase.DataStorage/Services/LiteDBEmojisFileService.cs b/src/Verdure.Braincase.DataStorage/Services/LiteDBEmojisFileService.cs
index fa6526e..59db6b9 100644
--- a/src/Verdure.Braincase.DataStorage/Services/LiteDBEmojisFileService.cs
+++ b/src/Verdure.Braincase.DataStorage/Services/LiteDBEmojisFileService.cs
@@ -1,5 +1,6 @@
using Contracts.Services;
using ElectronBot.Braincase.Models;
+using LiteDB;
using Verdure.Braincase.DataStorage.Mappers;
namespace Verdure.Braincase.DataStorage.Services;
@@ -15,23 +16,57 @@ public class LiteDBEmojisFileService : IEmojisFileService
throw new NotImplementedException();
}
public Task<(string path, string name)> ExportEmojisFileToTempAsync(EmoticonAction emoticonAction) => throw new NotImplementedException();
- public Task> GetEmojisFileListAsync(int pageIndex, int pageSize)
+ public Task> GetEmojisFileListAsync(int pageIndex, int pageSize)
{
- var emojis = _db.Emojis.FindAll().Skip(pageIndex * pageSize).Take(pageSize).Select(x => x.ToModel()).ToList();
- return Task.FromResult(emojis);
+ var list = new List();
+
+ var emojisDocs = _db.Emojis.FindAll().Skip(pageIndex * pageSize).Take(pageSize).ToList();
+
+ foreach (var item in emojisDocs)
+ {
+ var model = item.ToModel();
+
+ var avatarFile = _db.FileStorage.FindById(item.Avatar);
+
+ var stream = new MemoryStream();
+
+ _db.FileStorage.Download(avatarFile.Id, stream);
+
+ stream.Seek(0, SeekOrigin.Begin);
+
+ model.Avatar = stream;
+
+ list.Add(model);
+ }
+ return Task.FromResult(list);
}
- public Task SaveEmojisAsync(EmoticonAction emoticonAction)
+ public Task SaveEmojisAsync(EmoticonAction emoticonAction)
{
+ var doc = emoticonAction.ToDoc();
var emoticon = _db.Emojis.FindOne(x => x.NameId == emoticonAction.NameId);
if (emoticon != null)
{
- var doc = emoticonAction.ToDoc();
doc.Id = emoticon.Id;
_db.Emojis.Update(doc);
- return Task.FromResult(emoticonAction);
}
- _db.Emojis.Insert(emoticonAction.ToDoc());
- return Task.FromResult(emoticonAction);
+ else
+ {
+ _db.Emojis.Insert(doc);
+ }
+
+ var model = doc.ToModel();
+
+ var avatarFile = _db.FileStorage.FindById(doc.Avatar);
+
+ var stream = new MemoryStream();
+
+ _db.FileStorage.Download(avatarFile.Id, stream);
+
+ stream.Seek(0, SeekOrigin.Begin);
+
+ model.Avatar = stream;
+
+ return Task.FromResult(model);
}
public Task SaveEmojisFileAsync(Stream stream, string fileName, string fileType = ".mp4")
{
diff --git a/src/Verdure.WinUI.Common/Models/Emojis/EmoticonActionUIModel.cs b/src/Verdure.WinUI.Common/Models/Emojis/EmoticonActionUIModel.cs
new file mode 100644
index 0000000..01b496a
--- /dev/null
+++ b/src/Verdure.WinUI.Common/Models/Emojis/EmoticonActionUIModel.cs
@@ -0,0 +1,53 @@
+using Microsoft.UI.Xaml.Media.Imaging;
+using Verdure.Braincase.Core.Models.Emojis.Enums;
+
+namespace Verdure.WinUI.Common.Models;
+
+public class EmoticonActionUIModel
+{
+ public string NameId
+ {
+ get; set;
+ } = string.Empty;
+
+ public string Name
+ {
+ get; set;
+ } = string.Empty;
+
+ public string Desc
+ {
+ get; set;
+ } = string.Empty;
+
+ public BitmapImage? Avatar
+ {
+ get; set;
+ }
+
+ public string EmojisVideoPath
+ {
+ get; set;
+ } = string.Empty;
+ public string Type
+ {
+ get; set;
+ } = EmojisFileType.Default;
+
+ public string EmojisActionPath
+ {
+ get; set;
+ } = string.Empty;
+
+ public string EmojisAuthor
+ {
+ get;
+ set;
+ } = string.Empty;
+
+ public bool HasAction
+ {
+ get;
+ set;
+ }
+}
\ No newline at end of file
diff --git a/src/Verdure.WinUI.Common/ViewDataSource/EmojisSource.cs b/src/Verdure.WinUI.Common/ViewDataSource/EmojisSource.cs
index 12d2f70..57174f3 100644
--- a/src/Verdure.WinUI.Common/ViewDataSource/EmojisSource.cs
+++ b/src/Verdure.WinUI.Common/ViewDataSource/EmojisSource.cs
@@ -1,10 +1,11 @@
using System.Threading;
using CommunityToolkit.WinUI.Collections;
using Contracts.Services;
-using ElectronBot.Braincase.Models;
+using Microsoft.UI.Xaml.Media.Imaging;
+using Verdure.WinUI.Common.Models;
namespace Verdure.WinUI.Common.ViewDataSource;
-public class EmojisSource : IIncrementalSource
+public class EmojisSource : IIncrementalSource
{
private readonly IEmojisFileService _emojisFileService;
public EmojisSource(IEmojisFileService emojisFileService)
@@ -12,8 +13,37 @@ public class EmojisSource : IIncrementalSource
_emojisFileService = emojisFileService;
}
- public async Task> GetPagedItemsAsync(int pageIndex, int pageSize, CancellationToken cancellationToken = default)
+ public async Task> GetPagedItemsAsync(int pageIndex, int pageSize, CancellationToken cancellationToken = default)
{
- return await _emojisFileService.GetEmojisFileListAsync(pageIndex, pageSize);
+ var emojis = await _emojisFileService.GetEmojisFileListAsync(pageIndex, pageSize);
+ var retData = new List();
+
+ foreach (var item in emojis)
+ {
+ var data = new EmoticonActionUIModel
+ {
+ Name = item.Name,
+ NameId = item.NameId,
+ Desc = item.Desc,
+ EmojisActionPath = item.EmojisActionPath,
+ EmojisAuthor = item.EmojisAuthor,
+ EmojisVideoPath = item.EmojisVideoPath,
+ HasAction = item.HasAction,
+ Type = item.Type
+ };
+
+ if (item.Avatar != null)
+ {
+ var bitmapImage = new BitmapImage();
+
+ await bitmapImage.SetSourceAsync(item.Avatar.AsRandomAccessStream());
+
+ data.Avatar = bitmapImage;
+ }
+
+ retData.Add(data);
+ }
+
+ return retData;
}
}
\ No newline at end of file