Browse Source

Merge fixes

Krzysztof Krysiński 4 months ago
parent
commit
ec2dff72ae

+ 0 - 41
src/PixiEditor.Extensions.Runtime/ExtensionLoader.cs

@@ -2,7 +2,6 @@
 using System.Reflection;
 using System.Runtime.InteropServices;
 using Newtonsoft.Json;
-using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Extensions.Metadata;
 using PixiEditor.Extensions.WasmRuntime;
 using PixiEditor.Platform;
@@ -11,9 +10,6 @@ namespace PixiEditor.Extensions.Runtime;
 
 public class ExtensionLoader
 {
-    private readonly Dictionary<string, OfficialExtensionData> _officialExtensionsKeys =
-        new Dictionary<string, OfficialExtensionData>();
-
     public List<Extension> LoadedExtensions { get; } = new();
 
     public string PackagesPath { get; }
@@ -30,11 +26,6 @@ public class ExtensionLoader
         ValidateExtensionFolder();
     }
 
-    public void AddOfficialExtension(string uniqueName, OfficialExtensionData data)
-    {
-        _officialExtensionsKeys.Add(uniqueName, data);
-    }
-
     public void LoadExtensions()
     {
         foreach (var updateFile in Directory.GetFiles(PackagesPath, "*.update"))
@@ -328,38 +319,6 @@ public class ExtensionLoader
         return false;
     }
 
-    private bool VerifyAssemblySignature(string metadataUniqueName, Assembly assembly)
-    {
-        bool wasVerified = false;
-        bool verified = StrongNameSignatureVerificationEx(assembly.Location, true, ref wasVerified);
-        if (!verified || !wasVerified) return false;
-
-        byte[]? assemblyPublicKey = assembly.GetName().GetPublicKey();
-        if (assemblyPublicKey == null) return false;
-
-        return PublicKeysMatch(assemblyPublicKey, _officialExtensionsKeys[metadataUniqueName].PublicKeyName);
-    }
-
-    private bool PublicKeysMatch(byte[] assemblyPublicKey, string pathToPublicKey)
-    {
-        Assembly currentAssembly = Assembly.GetExecutingAssembly();
-        using Stream? stream =
-            currentAssembly.GetManifestResourceStream(
-                $"{currentAssembly.GetName().Name}.OfficialExtensions.{pathToPublicKey}");
-        if (stream == null) return false;
-
-        using MemoryStream memoryStream = new MemoryStream();
-        stream.CopyTo(memoryStream);
-        byte[] publicKey = memoryStream.ToArray();
-
-        return assemblyPublicKey.SequenceEqual(publicKey);
-    }
-
-    //TODO: uhh, other platforms dumbass?
-    [DllImport("mscoree.dll", CharSet = CharSet.Unicode)]
-    static extern bool StrongNameSignatureVerificationEx(string wszFilePath, bool fForceVerification,
-        ref bool pfWasVerified);
-
     private Extension LoadExtensionEntry(ExtensionEntry entry, ExtensionMetadata metadata)
     {
         Extension extension = entry.CreateExtension();

+ 16 - 4
src/PixiEditor.Platform/IPlatform.cs

@@ -25,12 +25,24 @@ public interface IPlatform
 
 public class NullAdditionalContentProvider : IAdditionalContentProvider
 {
-    public bool IsContentInstalled(AdditionalContentProduct product) => false;
-    public bool PlatformHasContent(AdditionalContentProduct product)
+    public Task<string?> InstallContent(string productId)
+    {
+        return Task.FromResult<string?>(null);
+    }
+
+    public bool IsContentOwned(string productId)
+    {
+        return false;
+    }
+
+    public bool PlatformHasContent(string productId)
     {
         return false;
     }
 
-    public void InstallContent(AdditionalContentProduct product) { }
-    public void UninstallContent(AdditionalContentProduct product) { }
+    public event Action<string, object>? OnError;
+    public bool IsInstalled(string productId)
+    {
+        return false;
+    }
 }

+ 1 - 1
src/PixiEditor.UI.Common/Localization/ILocalizationProvider.cs

@@ -16,7 +16,7 @@ public interface ILocalizationProvider
     /// </summary>
     public void LoadData(string currentLanguageCode = null);
     public void LoadLanguage(LanguageData languageData, bool forceReload = false);
-    public void LoadExtensionData(Extension extension);
+    public void LoadExtensionData(List<LanguageData> extensionLanguageData, string dataLocation);
     public void LoadDebugKeys(Dictionary<string, string> languageKeys, bool rightToLeft);
     public void ReloadLanguage();
     public Language DefaultLanguage { get; }

+ 1 - 3
src/PixiEditor.Extensions/UI/Translate.cs → src/PixiEditor.UI.Common/Localization/Translate.cs

@@ -1,9 +1,7 @@
 using Avalonia;
-using Avalonia.Controls;
 using Avalonia.Markup.Xaml;
-using PixiEditor.Extensions.Common.Localization;
 
-namespace PixiEditor.Extensions.UI;
+namespace PixiEditor.UI.Common.Localization;
 
 public class Translate : MarkupExtension
 {

+ 12 - 5
src/PixiEditor/Models/Localization/LocalizationProvider.cs

@@ -75,15 +75,22 @@ internal class LocalizationProvider : ILocalizationProvider
         LoadLanguage(LocalizationData.Languages.FirstOrDefault(x => x.Code == currentLanguageCode, FollowSystem));
     }
 
-    public void LoadExtensionData(Extension extension)
+    public void LoadExtensionData(List<LanguageData> extensionLanguageData, string dataLocation)
     {
-        LoadExtensionData(extension, LocalizationData);
+        if (extensionLanguageData == null || extensionLanguageData.Count == 0)
+        {
+            return;
+        }
+
+        LoadExtensionData(extensionLanguageData, dataLocation, LocalizationData);
         LoadLanguage(CurrentLanguage.LanguageData, true);
     }
 
-    private void LoadExtensionData(Extension extension, LocalizationData data)
+    private void LoadExtensionData(List<LanguageData> extensionLanguageData, string dataLocation, LocalizationData data)
     {
-        data.MergeWith(extension.Metadata.Localization.Languages, Path.GetDirectoryName(extension.Location));
+        string dirName = Path.GetDirectoryName(dataLocation);
+
+        data.MergeWith(extensionLanguageData, dirName);
     }
 
     private void LoadExtensionLocalizationData(LocalizationData localizationData)
@@ -105,7 +112,7 @@ internal class LocalizationProvider : ILocalizationProvider
                 continue;
             }
 
-            LoadExtensionData(extension, localizationData);
+            LoadExtensionData(extension.Metadata.Localization?.Languages, extension.Location, localizationData);
         }
     }
 

+ 2 - 1
src/PixiEditor/ViewModels/Menu/MenuBarViewModel.cs

@@ -3,6 +3,7 @@ using Avalonia;
 using Avalonia.Controls;
 using Avalonia.Controls.ApplicationLifetimes;
 using Avalonia.Data;
+using Avalonia.Threading;
 using Microsoft.Extensions.DependencyInjection;
 using PixiEditor.Extensions.UI;
 using PixiEditor.Helpers.UI;
@@ -101,7 +102,7 @@ internal class MenuBarViewModel : PixiObservableObject
             BuildMenuEntry(command);
         }
 
- BuildMenu(controller, menuItemBuilders);
+        BuildMenu(controller, menuItemBuilders);
 
         OnPropertyChanged(nameof(MenuEntries));
         OnPropertyChanged(nameof(NativeMenu));

+ 2 - 2
src/PixiEditor/ViewModels/SubViewModels/ExtensionsViewModel.cs

@@ -1,9 +1,9 @@
 using Microsoft.Extensions.DependencyInjection;
 using PixiEditor.Extensions;
-using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Extensions.CommonApi.Windowing;
 using PixiEditor.Extensions.Runtime;
 using PixiEditor.Models.ExtensionServices;
+using PixiEditor.UI.Common.Localization;
 using PixiEditor.Views.Windows;
 
 namespace PixiEditor.ViewModels.SubViewModels;
@@ -34,7 +34,7 @@ internal class ExtensionsViewModel : SubViewModel<ViewModelMain>
                 return;
             }
 
-            ILocalizationProvider.Current.LoadExtensionData(loadedExtension);
+            ILocalizationProvider.Current.LoadExtensionData(loadedExtension.Metadata.Localization?.Languages, loadedExtension.Location);
             loadedExtension.Initialize(new ExtensionServices(Owner.Services));
         }
     }

+ 1 - 6
src/PixiEditor/ViewModels/SubViewModels/UserViewModel.cs

@@ -1,17 +1,12 @@
 using System.Collections.ObjectModel;
 using Avalonia.Threading;
 using CommunityToolkit.Mvvm.Input;
-using DiscordRPC;
-using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Helpers;
 using PixiEditor.IdentityProvider;
 using PixiEditor.IdentityProvider.PixiAuth;
-using PixiEditor.Models.Commands.Attributes.Commands;
-using PixiEditor.OperatingSystem;
-using PixiEditor.PixiAuth;
-using PixiEditor.PixiAuth.Exceptions;
 using PixiEditor.PixiAuth.Utils;
 using PixiEditor.Platform;
+using PixiEditor.UI.Common.Localization;
 using PixiEditor.ViewModels.User;
 
 namespace PixiEditor.ViewModels.SubViewModels;

+ 1 - 2
src/PixiEditor/Views/Auth/LoginForm.axaml

@@ -2,12 +2,11 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-             xmlns:auth1="clr-namespace:PixiEditor.Views.Auth"
-             xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"
              xmlns:subViewModels="clr-namespace:PixiEditor.ViewModels.SubViewModels"
              xmlns:converters="clr-namespace:PixiEditor.Helpers.Converters"
              xmlns:asyncImageLoader="clr-namespace:AsyncImageLoader;assembly=AsyncImageLoader.Avalonia"
              xmlns:xaml="clr-namespace:PixiEditor.Models.Commands.XAML"
+             xmlns:ui="clr-namespace:PixiEditor.UI.Common.Localization;assembly=PixiEditor.UI.Common"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
              x:Class="PixiEditor.Views.Auth.LoginForm">
     <Design.DataContext>

+ 2 - 1
src/PixiEditor/Views/Auth/LoginPopup.axaml

@@ -7,12 +7,13 @@
                          xmlns:viewModels="clr-namespace:PixiEditor.ViewModels"
                          xmlns:subViewModels="clr-namespace:PixiEditor.ViewModels.SubViewModels"
                          xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"
+                         xmlns:localization="clr-namespace:PixiEditor.UI.Common.Localization;assembly=PixiEditor.UI.Common"
                          mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
                          x:Class="PixiEditor.Views.Auth.LoginPopup"
                          CanMinimize="True"
                          CanResize="False"
                          Width="320" Height="280"
-                         ui:Translator.Key="ACCOUNT_WINDOW_TITLE">
+                         localization:Translator.Key="ACCOUNT_WINDOW_TITLE">
     <Design.DataContext>
         <subViewModels:UserViewModel />
     </Design.DataContext>

+ 1 - 1
src/PixiEditor/Views/Auth/UserAvatarToggle.axaml

@@ -5,7 +5,7 @@
              xmlns:subViewModels="clr-namespace:PixiEditor.ViewModels.SubViewModels"
              xmlns:pixiAuth="clr-namespace:PixiEditor.PixiAuth;assembly=PixiEditor.PixiAuth"
              xmlns:asyncImageLoader="clr-namespace:AsyncImageLoader;assembly=AsyncImageLoader.Avalonia"
-             xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"
+             xmlns:ui="clr-namespace:PixiEditor.UI.Common.Localization;assembly=PixiEditor.UI.Common"
              xmlns:xaml="clr-namespace:PixiEditor.Models.Commands.XAML"
              xmlns:auth="clr-namespace:PixiEditor.Views.Auth"
              xmlns:converters="clr-namespace:PixiEditor.Helpers.Converters"

+ 2 - 2
src/PixiEditor/Views/Dialogs/OnboardingDialog.axaml

@@ -228,7 +228,7 @@
                             </DataTemplate>
                         </ComboBox.ItemTemplate>
                     </ComboBox>
-                    <TextBlock DockPanel.Dock="Bottom" ui:Hyperlink.Url="https://discord.gg/qSRMYmq"
+                    <TextBlock DockPanel.Dock="Bottom" ui1:Hyperlink.Url="https://discord.gg/qSRMYmq"
                                ui:Translator.Key="LANGUAGE_INFO" />
                 </StackPanel>
                 <StackPanel Grid.Row="1"
@@ -271,7 +271,7 @@
                     <TextBlock Padding="20" Classes="subtext" ui:Translator.Key="ANALYTICS_INFO_DETAILED"
                                TextWrapping="Wrap">
                         <TextBlock Text=" " />
-                        <TextBlock ui:Hyperlink.Url="https://pixieditor.net/docs/privacy-policy"
+                        <TextBlock ui1:Hyperlink.Url="https://pixieditor.net/docs/privacy-policy"
                                    ui:Translator.Key="PRIVACY_POLICY" />
                     </TextBlock>
                 </StackPanel>