Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions OneGateApp/Data/DApp.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ namespace NeoOrder.OneGate.Data;

public class DApp : IComparable<DApp>, IShareable, IVersioned
{
const int OneGateVaultDAppId = 23;
const string OneGateVaultHost = "neomini.app";
const string OneGateVaultPath = "/miniapps/miniapp-gas-lucky-pool";

[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
public bool IsActive { get; set; }
Expand All @@ -31,6 +35,8 @@ public class DApp : IComparable<DApp>, IShareable, IVersioned

public bool IsGamingApp => !string.IsNullOrWhiteSpace(GameType);
public bool IsRegularApp => !IsGamingApp;
public bool IsOneGateVault => Id == OneGateVaultDAppId || IsOneGateVaultUrl(Url);
public string OneGateVaultStatusText => IsActive ? Strings.OneGateVaultStatusActive : Strings.OneGateVaultStatusUnavailable;
public string? GameTypeDisplayName => LocalizeGameType(GameType);
public Dictionary<string, string> NameLocalizer => field ??= JsonSerializer.Deserialize<Dictionary<string, string>>(Name)!;
public Dictionary<string, string>? DescriptionLocalizer => Description is null ? null : field ??= JsonSerializer.Deserialize<Dictionary<string, string>>(Description);
Expand All @@ -53,4 +59,12 @@ public static string LocalizeTag(string tag)
if (string.IsNullOrWhiteSpace(gameType)) return null;
return Strings.ResourceManager.GetString($"GameType{gameType}") ?? gameType;
}

static bool IsOneGateVaultUrl(string url)
{
if (!Uri.TryCreate(url, UriKind.Absolute, out Uri? uri)) return false;
return uri.Scheme == Uri.UriSchemeHttps
&& string.Equals(uri.Host, OneGateVaultHost, StringComparison.OrdinalIgnoreCase)
&& string.Equals(uri.AbsolutePath.TrimEnd('/'), OneGateVaultPath, StringComparison.OrdinalIgnoreCase);
}
}
31 changes: 30 additions & 1 deletion OneGateApp/Pages/DAppDetailsPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,35 @@
</VerticalStackLayout>
</Grid>
<Button Text="{x:Static og:Strings.Open}" Command="{x:Static og:Commands.LaunchDApp}" CommandParameter="{Binding .}" />
<Border StrokeShape="RoundRectangle 10" BackgroundColor="{toolkit:AppThemeResource Panel}" Padding="16" IsVisible="{Binding IsOneGateVault}">
<VerticalStackLayout Spacing="12">
<Grid ColumnDefinitions="*,auto" ColumnSpacing="10">
<Label Text="{x:Static og:Strings.OneGateVaultOfficial}" FontAttributes="Bold" FontSize="16" LineBreakMode="TailTruncation" VerticalOptions="Center" />
<Border Grid.Column="1" StrokeShape="RoundRectangle 4" BackgroundColor="{toolkit:AppThemeResource BrandMuted}" Padding="8,3" VerticalOptions="Center">
<Label Text="{x:Static og:Strings.Official}" TextColor="{toolkit:AppThemeResource Success}" FontSize="11" FontAttributes="Bold" />
</Border>
</Grid>
<Label StyleClass="Secondary" Text="{x:Static og:Strings.OneGateVaultOfficialText}" FontSize="12" LineBreakMode="WordWrap" />
<Grid ColumnDefinitions="*,auto" ColumnSpacing="10">
<Label StyleClass="Secondary" Text="{x:Static og:Strings.Status}" FontSize="12" VerticalOptions="Center" />
<Label Grid.Column="1" Text="{Binding OneGateVaultStatusText}" TextColor="{toolkit:AppThemeResource Success}" FontSize="12" FontAttributes="Bold" VerticalOptions="Center">
<Label.Triggers>
<DataTrigger TargetType="Label" Binding="{Binding IsActive}" Value="False">
<Setter Property="TextColor" Value="{toolkit:AppThemeResource Danger}" />
</DataTrigger>
</Label.Triggers>
</Label>
</Grid>
<VerticalStackLayout Spacing="4">
<Label Text="{x:Static og:Strings.OneGateVaultRules}" FontAttributes="Bold" FontSize="13" />
<Label StyleClass="Secondary" Text="{x:Static og:Strings.OneGateVaultRulesText}" FontSize="12" LineBreakMode="WordWrap" />
</VerticalStackLayout>
<VerticalStackLayout Spacing="4">
<Label Text="{x:Static og:Strings.OneGateVaultHistory}" FontAttributes="Bold" FontSize="13" />
<Label StyleClass="Secondary" Text="{x:Static og:Strings.OneGateVaultHistoryText}" FontSize="12" LineBreakMode="WordWrap" />
</VerticalStackLayout>
</VerticalStackLayout>
</Border>
<Label Text="{x:Static og:Strings.GameType}" FontAttributes="Bold" IsVisible="{Binding GameType, Converter={StaticResource IsStringNotNullOrEmptyConverter}}" />
<Label Text="{Binding GameTypeDisplayName}" Margin="0,-10,0,0" IsVisible="{Binding GameType, Converter={StaticResource IsStringNotNullOrEmptyConverter}}" />
<Label Text="{x:Static og:Strings.Preview}" FontAttributes="Bold" IsVisible="{Binding Previews, Converter={StaticResource IsListNotNullOrEmptyConverter}}" />
Expand All @@ -69,4 +98,4 @@
<Label Text="{Binding Languages, Converter={StaticResource LanguageConverter}}" Margin="0,-10,0,0" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
</ContentPage>
7 changes: 6 additions & 1 deletion OneGateApp/Pages/DAppsPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,12 @@
</Image>
</Border>
<VerticalStackLayout Grid.Column="1" Spacing="4" VerticalOptions="Center">
<Label Text="{Binding Name, Converter={StaticResource LocalizerConverter}}" FontAttributes="Bold" FontSize="16" LineBreakMode="TailTruncation" />
<Grid ColumnDefinitions="*,auto" ColumnSpacing="8">
<Label Text="{Binding Name, Converter={StaticResource LocalizerConverter}}" FontAttributes="Bold" FontSize="16" LineBreakMode="TailTruncation" VerticalOptions="Center" />
<Border Grid.Column="1" StrokeShape="RoundRectangle 4" BackgroundColor="{toolkit:AppThemeResource BrandMuted}" Padding="6,2" VerticalOptions="Center" IsVisible="{Binding IsOneGateVault}">
<Label Text="{x:Static og:Strings.Official}" TextColor="{toolkit:AppThemeResource Success}" FontSize="10" FontAttributes="Bold" />
</Border>
</Grid>
<Label StyleClass="Secondary" Text="{Binding Description, Converter={StaticResource LocalizerConverter}}" FontSize="12" MaxLines="2" LineBreakMode="TailTruncation" />
</VerticalStackLayout>
<Button Grid.Column="2" StyleClass="Icon, IconSecondary" Text="&#xe605;" FontSize="20" Padding="8" WidthRequest="40" HeightRequest="40" VerticalOptions="Center" Clicked="OnDetailsClicked" CommandParameter="{Binding .}" />
Expand Down
81 changes: 81 additions & 0 deletions OneGateApp/Properties/Strings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 28 additions & 1 deletion OneGateApp/Properties/Strings.de.resx
Original file line number Diff line number Diff line change
Expand Up @@ -989,4 +989,31 @@ Es wird empfohlen, den NEP-2-Schlüssel und das Passwort getrennt aufzubewahren
<data name="Unavailable" xml:space="preserve">
<value>Nicht verfügbar</value>
</data>
</root>
<data name="Official" xml:space="preserve">
<value>Offiziell</value>
</data>
<data name="OneGateVaultOfficial" xml:space="preserve">
<value>Offizieller OneGate Vault</value>
</data>
<data name="OneGateVaultOfficialText" xml:space="preserve">
<value>Betrieben von R3E Network für die OneGate-Erfahrung. Wallet-Freigaben verwenden weiterhin die Verbindungs- und Signaturbestätigungen von OneGate.</value>
</data>
<data name="OneGateVaultStatusActive" xml:space="preserve">
<value>Aktiv</value>
</data>
<data name="OneGateVaultStatusUnavailable" xml:space="preserve">
<value>Nicht verfügbar</value>
</data>
<data name="OneGateVaultRules" xml:space="preserve">
<value>Regeln</value>
</data>
<data name="OneGateVaultRulesText" xml:space="preserve">
<value>Prüfen Sie im bestehenden Vault dApp Poolregeln, Berechtigung und Anspruchszeitpunkt, bevor Sie verbinden oder signieren.</value>
</data>
<data name="OneGateVaultHistory" xml:space="preserve">
<value>Verlauf</value>
</data>
<data name="OneGateVaultHistoryText" xml:space="preserve">
<value>Vault-Aktionen erscheinen nach einer signierten Operation im dApp und in der On-Chain-Transaktionshistorie.</value>
</data>
</root>
29 changes: 28 additions & 1 deletion OneGateApp/Properties/Strings.es.resx
Original file line number Diff line number Diff line change
Expand Up @@ -989,4 +989,31 @@ Se recomienda almacenar la clave NEP-2 y la contraseña por separado y realizar
<data name="Unavailable" xml:space="preserve">
<value>No disponible</value>
</data>
</root>
<data name="Official" xml:space="preserve">
<value>Oficial</value>
</data>
<data name="OneGateVaultOfficial" xml:space="preserve">
<value>OneGate Vault oficial</value>
</data>
<data name="OneGateVaultOfficialText" xml:space="preserve">
<value>Operado por R3E Network para la experiencia OneGate. Las aprobaciones de la billetera siguen usando las confirmaciones de conexión y firma de OneGate.</value>
</data>
<data name="OneGateVaultStatusActive" xml:space="preserve">
<value>Activo</value>
</data>
<data name="OneGateVaultStatusUnavailable" xml:space="preserve">
<value>No disponible</value>
</data>
<data name="OneGateVaultRules" xml:space="preserve">
<value>Reglas</value>
</data>
<data name="OneGateVaultRulesText" xml:space="preserve">
<value>Use la dApp Vault existente para revisar las reglas del pool, la elegibilidad y los plazos de reclamo antes de conectar o firmar.</value>
</data>
<data name="OneGateVaultHistory" xml:space="preserve">
<value>Historial</value>
</data>
<data name="OneGateVaultHistoryText" xml:space="preserve">
<value>Las acciones de Vault aparecen dentro de la dApp y en el historial de transacciones en cadena después de una operación firmada.</value>
</data>
</root>
29 changes: 28 additions & 1 deletion OneGateApp/Properties/Strings.fr.resx
Original file line number Diff line number Diff line change
Expand Up @@ -989,4 +989,31 @@ Il est recommandé de conserver séparément la clé NEP-2 et le mot de passe, e
<data name="Unavailable" xml:space="preserve">
<value>Indisponible</value>
</data>
</root>
<data name="Official" xml:space="preserve">
<value>Officiel</value>
</data>
<data name="OneGateVaultOfficial" xml:space="preserve">
<value>OneGate Vault officiel</value>
</data>
<data name="OneGateVaultOfficialText" xml:space="preserve">
<value>Exploité par R3E Network pour l’expérience OneGate. Les approbations du portefeuille utilisent toujours les confirmations de connexion et de signature OneGate.</value>
</data>
<data name="OneGateVaultStatusActive" xml:space="preserve">
<value>Actif</value>
</data>
<data name="OneGateVaultStatusUnavailable" xml:space="preserve">
<value>Indisponible</value>
</data>
<data name="OneGateVaultRules" xml:space="preserve">
<value>Règles</value>
</data>
<data name="OneGateVaultRulesText" xml:space="preserve">
<value>Utilisez la dApp Vault existante pour vérifier les règles du pool, l’éligibilité et le calendrier de réclamation avant de vous connecter ou de signer.</value>
</data>
<data name="OneGateVaultHistory" xml:space="preserve">
<value>Historique</value>
</data>
<data name="OneGateVaultHistoryText" xml:space="preserve">
<value>Les actions Vault apparaissent dans la dApp et dans l’historique des transactions on-chain après une opération signée.</value>
</data>
</root>
29 changes: 28 additions & 1 deletion OneGateApp/Properties/Strings.id.resx
Original file line number Diff line number Diff line change
Expand Up @@ -989,4 +989,31 @@ Disarankan untuk menyimpan kunci NEP-2 dan kata sandinya secara terpisah serta m
<data name="Unavailable" xml:space="preserve">
<value>Tidak tersedia</value>
</data>
</root>
<data name="Official" xml:space="preserve">
<value>Resmi</value>
</data>
<data name="OneGateVaultOfficial" xml:space="preserve">
<value>OneGate Vault resmi</value>
</data>
<data name="OneGateVaultOfficialText" xml:space="preserve">
<value>Dioperasikan oleh R3E Network untuk pengalaman OneGate. Persetujuan dompet tetap menggunakan konfirmasi koneksi dan tanda tangan OneGate.</value>
</data>
<data name="OneGateVaultStatusActive" xml:space="preserve">
<value>Aktif</value>
</data>
<data name="OneGateVaultStatusUnavailable" xml:space="preserve">
<value>Tidak tersedia</value>
</data>
<data name="OneGateVaultRules" xml:space="preserve">
<value>Aturan</value>
</data>
<data name="OneGateVaultRulesText" xml:space="preserve">
<value>Gunakan dApp Vault yang ada untuk meninjau aturan pool, kelayakan, dan waktu klaim sebelum menghubungkan atau menandatangani.</value>
</data>
<data name="OneGateVaultHistory" xml:space="preserve">
<value>Riwayat</value>
</data>
<data name="OneGateVaultHistoryText" xml:space="preserve">
<value>Tindakan Vault muncul di dalam dApp dan di riwayat transaksi on-chain setelah operasi ditandatangani.</value>
</data>
</root>
29 changes: 28 additions & 1 deletion OneGateApp/Properties/Strings.it.resx
Original file line number Diff line number Diff line change
Expand Up @@ -989,4 +989,31 @@ Si consiglia di conservare separatamente la chiave NEP-2 e la password e di eseg
<data name="Unavailable" xml:space="preserve">
<value>Non disponibile</value>
</data>
</root>
<data name="Official" xml:space="preserve">
<value>Ufficiale</value>
</data>
<data name="OneGateVaultOfficial" xml:space="preserve">
<value>OneGate Vault ufficiale</value>
</data>
<data name="OneGateVaultOfficialText" xml:space="preserve">
<value>Gestito da R3E Network per l’esperienza OneGate. Le approvazioni del portafoglio usano ancora le conferme di connessione e firma di OneGate.</value>
</data>
<data name="OneGateVaultStatusActive" xml:space="preserve">
<value>Attivo</value>
</data>
<data name="OneGateVaultStatusUnavailable" xml:space="preserve">
<value>Non disponibile</value>
</data>
<data name="OneGateVaultRules" xml:space="preserve">
<value>Regole</value>
</data>
<data name="OneGateVaultRulesText" xml:space="preserve">
<value>Usa la dApp Vault esistente per rivedere regole del pool, idoneità e tempi di richiesta prima di connetterti o firmare.</value>
</data>
<data name="OneGateVaultHistory" xml:space="preserve">
<value>Cronologia</value>
</data>
<data name="OneGateVaultHistoryText" xml:space="preserve">
<value>Le azioni Vault appaiono nella dApp e nella cronologia delle transazioni on-chain dopo un’operazione firmata.</value>
</data>
</root>
29 changes: 28 additions & 1 deletion OneGateApp/Properties/Strings.ja.resx
Original file line number Diff line number Diff line change
Expand Up @@ -989,4 +989,31 @@ NEP-2 とパスワードは別々に保管し、それぞれを安全にバッ
<data name="Unavailable" xml:space="preserve">
<value>利用不可</value>
</data>
</root>
<data name="Official" xml:space="preserve">
<value>公式</value>
</data>
<data name="OneGateVaultOfficial" xml:space="preserve">
<value>公式 OneGate Vault</value>
</data>
<data name="OneGateVaultOfficialText" xml:space="preserve">
<value>OneGate 体験のために R3E Network が運営しています。ウォレット承認は引き続き OneGate の接続確認と署名確認を使用します。</value>
</data>
<data name="OneGateVaultStatusActive" xml:space="preserve">
<value>稼働中</value>
</data>
<data name="OneGateVaultStatusUnavailable" xml:space="preserve">
<value>利用不可</value>
</data>
<data name="OneGateVaultRules" xml:space="preserve">
<value>ルール</value>
</data>
<data name="OneGateVaultRulesText" xml:space="preserve">
<value>接続または署名する前に、既存の Vault dApp でプールルール、対象条件、請求タイミングを確認してください。</value>
</data>
<data name="OneGateVaultHistory" xml:space="preserve">
<value>履歴</value>
</data>
<data name="OneGateVaultHistoryText" xml:space="preserve">
<value>署名済み操作の後、Vault アクションは dApp 内とオンチェーン取引履歴に表示されます。</value>
</data>
</root>
Loading