Azure Key Vault Explorer
@@ -19,11 +19,12 @@
winget install "Key Vault Explorer" --source msstore
```
-### macOS and Linux
+### [macOS](#macos) and Linux
Download from the [releases page](https://github.com/cricketthomas/AzureKeyVaultExplorer/releases).

+
Named 'Key Vault Explorer' in the Microsoft Store.
@@ -32,7 +33,7 @@ Download from the [releases page](https://github.com/cricketthomas/AzureKeyVault
## Overview
Visit the releases section to download the application for mac and linux.
-**Key Vault Explorer** is a lightweight tool with the idea to simplify finding and accessing secrets (and certificates and keys) stored in Azure Key Vault, providing a interface for aggregating, filtering, and quickly getting secret values. The app was inspired by the original [AzureKeyVaultExplorer](https://github.com/microsoft/AzureKeyVaultExplorer) with the goal to eventually bring some more feature parity but first brining the application to macOS.
+**Key Vault Explorer** is a lightweight tool with the idea to simplify finding and accessing secrets (and certificates and keys) stored in Azure Key Vault, providing a interface for aggregating, filtering, and quickly getting secret values. The app was inspired by the original [AzureKeyVaultExplorer](https://github.com/microsoft/AzureKeyVaultExplorer) with the goal to eventually bring some more feature parity but first bringing the application to macOS.
### Key features
@@ -72,7 +73,7 @@ The SQLite database is encrypted using DPAPI on windows, and on macOS the passwo
### Get it from the [releases](https://github.com/cricketthomas/AzureKeyVaultExplorer/releases) page or the Microsoft Store.
-#### macOS
+### macOS
After downloading the `.app` bundle, macOS may block it because it's from an unidentified developer. To fix this, run:
```bash
diff --git a/src/uno/AzureKeyVaultStudio.slnx b/src/uno/AzureKeyVaultStudio.slnx
index b849bbb4..2d952a7a 100644
--- a/src/uno/AzureKeyVaultStudio.slnx
+++ b/src/uno/AzureKeyVaultStudio.slnx
@@ -6,5 +6,5 @@
-
+
diff --git a/src/uno/AzureKeyVaultStudio/.editorconfig b/src/uno/AzureKeyVaultStudio/.editorconfig
deleted file mode 100644
index ee73562b..00000000
--- a/src/uno/AzureKeyVaultStudio/.editorconfig
+++ /dev/null
@@ -1,167 +0,0 @@
-; This file is for unifying the coding style for different editors and IDEs.
-; More information at http://editorconfig.org
-
-# This file is the top-most EditorConfig file
-root = true
-
-##########################################
-# Common Settings
-##########################################
-
-[*]
-indent_style = space
-end_of_line = crlf
-trim_trailing_whitespace = true
-insert_final_newline = true
-charset = utf-8
-
-##########################################
-# File Extension Settings
-##########################################
-
-[*.{yml,yaml}]
-indent_size = 2
-
-[.vsconfig]
-indent_size = 2
-end_of_line = lf
-
-[*.sln]
-indent_style = tab
-indent_size = 2
-
-[*.{csproj,proj,projitems,shproj}]
-indent_size = 4
-
-[*.{json,slnf}]
-indent_size = 2
-end_of_line = lf
-
-[*.{props,targets}]
-indent_size = 4
-
-[*.xaml]
-indent_size = 4
-charset = utf-8-bom
-
-[*.xml]
-indent_size = 4
-end_of_line = lf
-
-[*.plist]
-indent_size = 4
-indent_style = tab
-end_of_line = lf
-
-[*.manifest]
-indent_size = 4
-
-[*.appxmanifest]
-indent_size = 4
-
-[*.{json,css,webmanifest}]
-indent_size = 2
-end_of_line = lf
-
-[web.config]
-indent_size = 4
-end_of_line = lf
-
-[*.sh]
-indent_size = 2
-end_of_line = lf
-
-[*.cs]
-# EOL should be normalized by Git. See https://github.com/dotnet/format/issues/1099
-end_of_line = unset
-
-# See https://github.com/dotnet/roslyn/issues/20356#issuecomment-310143926
-trim_trailing_whitespace = false
-
-tab_width = 4
-indent_size = 4
-
-# Sort using and Import directives with System.* appearing first
-dotnet_sort_system_directives_first = true
-
-# Avoid "this." and "Me." if not necessary
-dotnet_style_qualification_for_field = false:suggestion
-dotnet_style_qualification_for_property = false:suggestion
-dotnet_style_qualification_for_method = false:suggestion
-dotnet_style_qualification_for_event = false:suggestion
-
-#### Naming styles ####
-
-# Naming rules
-
-dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
-dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
-dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
-
-dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
-dotnet_naming_rule.types_should_be_pascal_case.symbols = types
-dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
-
-dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
-dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
-dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
-
-# Symbol specifications
-
-dotnet_naming_symbols.interface.applicable_kinds = interface
-dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.interface.required_modifiers =
-
-dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
-dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.types.required_modifiers =
-
-dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
-dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.non_field_members.required_modifiers =
-
-# Naming styles
-
-dotnet_naming_style.begins_with_i.required_prefix = I
-dotnet_naming_style.begins_with_i.required_suffix =
-dotnet_naming_style.begins_with_i.word_separator =
-dotnet_naming_style.begins_with_i.capitalization = pascal_case
-
-dotnet_naming_style.pascal_case.required_prefix =
-dotnet_naming_style.pascal_case.required_suffix =
-dotnet_naming_style.pascal_case.word_separator =
-dotnet_naming_style.pascal_case.capitalization = pascal_case
-
-dotnet_naming_style.pascal_case.required_prefix =
-dotnet_naming_style.pascal_case.required_suffix =
-dotnet_naming_style.pascal_case.word_separator =
-dotnet_naming_style.pascal_case.capitalization = pascal_case
-dotnet_style_operator_placement_when_wrapping = beginning_of_line
-dotnet_style_coalesce_expression = true:suggestion
-dotnet_style_null_propagation = true:suggestion
-dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
-dotnet_style_prefer_auto_properties = true:silent
-dotnet_style_object_initializer = true:suggestion
-dotnet_style_collection_initializer = true:suggestion
-dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
-dotnet_style_prefer_conditional_expression_over_assignment = true:silent
-dotnet_style_prefer_conditional_expression_over_return = true:silent
-dotnet_style_explicit_tuple_names = true:suggestion
-dotnet_style_prefer_inferred_tuple_names = true:suggestion
-
-csharp_indent_labels = one_less_than_current
-csharp_using_directive_placement = outside_namespace:silent
-csharp_prefer_simple_using_statement = true:suggestion
-csharp_prefer_braces = true:silent
-csharp_style_namespace_declarations = file_scoped:warning
-csharp_style_prefer_method_group_conversion = true:silent
-csharp_style_prefer_top_level_statements = true:silent
-csharp_style_prefer_primary_constructors = true:suggestion
-csharp_style_expression_bodied_methods = false:silent
-csharp_style_expression_bodied_constructors = false:silent
-csharp_style_expression_bodied_operators = false:silent
-csharp_style_expression_bodied_properties = true:silent
-csharp_style_expression_bodied_indexers = true:silent
-csharp_style_expression_bodied_accessors = true:silent
-csharp_style_expression_bodied_lambdas = true:silent
-csharp_style_expression_bodied_local_functions = false:silent
diff --git a/src/uno/AzureKeyVaultStudio/.gitattributes b/src/uno/AzureKeyVaultStudio/.gitattributes
deleted file mode 100644
index 1ff0c423..00000000
--- a/src/uno/AzureKeyVaultStudio/.gitattributes
+++ /dev/null
@@ -1,63 +0,0 @@
-###############################################################################
-# Set default behavior to automatically normalize line endings.
-###############################################################################
-* text=auto
-
-###############################################################################
-# Set default behavior for command prompt diff.
-#
-# This is need for earlier builds of msysgit that does not have it on by
-# default for csharp files.
-# Note: This is only used by command line
-###############################################################################
-#*.cs diff=csharp
-
-###############################################################################
-# Set the merge driver for project and solution files
-#
-# Merging from the command prompt will add diff markers to the files if there
-# are conflicts (Merging from VS is not affected by the settings below, in VS
-# the diff markers are never inserted). Diff markers may cause the following
-# file extensions to fail to load in VS. An alternative would be to treat
-# these files as binary and thus will always conflict and require user
-# intervention with every merge. To do so, just uncomment the entries below
-###############################################################################
-#*.sln merge=binary
-#*.csproj merge=binary
-#*.vbproj merge=binary
-#*.vcxproj merge=binary
-#*.vcproj merge=binary
-#*.dbproj merge=binary
-#*.fsproj merge=binary
-#*.lsproj merge=binary
-#*.wixproj merge=binary
-#*.modelproj merge=binary
-#*.sqlproj merge=binary
-#*.wwaproj merge=binary
-
-###############################################################################
-# behavior for image files
-#
-# image files are treated as binary by default.
-###############################################################################
-#*.jpg binary
-#*.png binary
-#*.gif binary
-
-###############################################################################
-# diff behavior for common document formats
-#
-# Convert binary document formats to text before diffing them. This feature
-# is only available from the command line. Turn it on by uncommenting the
-# entries below.
-###############################################################################
-#*.doc diff=astextplain
-#*.DOC diff=astextplain
-#*.docx diff=astextplain
-#*.DOCX diff=astextplain
-#*.dot diff=astextplain
-#*.DOT diff=astextplain
-#*.pdf diff=astextplain
-#*.PDF diff=astextplain
-#*.rtf diff=astextplain
-#*.RTF diff=astextplain
diff --git a/src/uno/AzureKeyVaultStudio/.gitignore b/src/uno/AzureKeyVaultStudio/.gitignore
deleted file mode 100644
index f04ef048..00000000
--- a/src/uno/AzureKeyVaultStudio/.gitignore
+++ /dev/null
@@ -1,488 +0,0 @@
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-##
-## Get latest from `dotnet new gitignore`
-
-# dotenv files
-.env
-
-# User-specific files
-*.rsuser
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
-*.userprefs
-
-# Mono auto generated files
-mono_crash.*
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-[Ww][Ii][Nn]32/
-[Aa][Rr][Mm]/
-[Aa][Rr][Mm]64/
-bld/
-[Bb]in/
-[Oo]bj/
-[Ll]og/
-[Ll]ogs/
-
-# Visual Studio 2015/2017 cache/options directory
-.vs/
-# Uncomment if you have tasks that create the project's static files in wwwroot
-#wwwroot/
-
-# Visual Studio 2017 auto generated files
-Generated\ Files/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-# NUnit
-*.VisualState.xml
-TestResult.xml
-nunit-*.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-# Benchmark Results
-BenchmarkDotNet.Artifacts/
-
-# .NET
-project.lock.json
-project.fragment.lock.json
-artifacts/
-
-# Tye
-.tye/
-
-# ASP.NET Scaffolding
-ScaffoldingReadMe.txt
-
-# StyleCop
-StyleCopReport.xml
-
-# Files built by Visual Studio
-*_i.c
-*_p.c
-*_h.h
-*.ilk
-*.meta
-*.obj
-*.iobj
-*.pch
-*.pdb
-*.ipdb
-*.pgc
-*.pgd
-*.rsp
-# but not Directory.Build.rsp, as it configures directory-level build defaults
-!Directory.Build.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*_wpftmp.csproj
-*.log
-*.tlog
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-*.VC.db
-*.VC.VC.opendb
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-*.sap
-
-# Visual Studio Trace Files
-*.e2e
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# AxoCover is a Code Coverage Tool
-.axoCover/*
-!.axoCover/settings.json
-
-# Coverlet is a free, cross platform Code Coverage Tool
-coverage*.json
-coverage*.xml
-coverage*.info
-
-# Visual Studio code coverage results
-*.coverage
-*.coveragexml
-
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-nCrunchTemp_*
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
-# Publish Web Output
-*.[Pp]ublish.xml
-*.azurePubxml
-# Note: Comment the next line if you want to checkin your web deploy settings,
-# but database connection strings (with potential passwords) will be unencrypted
-*.pubxml
-*.publishproj
-
-# Microsoft Azure Web App publish settings. Comment the next line if you want to
-# checkin your Azure Web App publish settings, but sensitive information contained
-# in these scripts will be unencrypted
-PublishScripts/
-
-# NuGet Packages
-*.nupkg
-# NuGet Symbol Packages
-*.snupkg
-# The packages folder can be ignored because of Package Restore
-**/[Pp]ackages/*
-# except build/, which is used as an MSBuild target.
-!**/[Pp]ackages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/[Pp]ackages/repositories.config
-# NuGet v3's project.json files produces more ignorable files
-*.nuget.props
-*.nuget.targets
-
-# Microsoft Azure Build Output
-csx/
-*.build.csdef
-
-# Microsoft Azure Emulator
-ecf/
-rcf/
-
-# Windows Store app package directories and files
-AppPackages/
-BundleArtifacts/
-Package.StoreAssociation.xml
-_pkginfo.txt
-*.appx
-*.appxbundle
-*.appxupload
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!?*.[Cc]ache/
-
-# Others
-ClientBin/
-~$*
-*~
-*.dbmdl
-*.dbproj.schemaview
-*.jfm
-*.pfx
-*.publishsettings
-orleans.codegen.cs
-
-# Including strong name files can present a security risk
-# (https://github.com/github/gitignore/pull/2483#issue-259490424)
-#*.snk
-
-# Since there are multiple workflows, uncomment next line to ignore bower_components
-# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
-#bower_components/
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file
-# to a newer Visual Studio version. Backup files are not needed,
-# because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-ServiceFabricBackup/
-*.rptproj.bak
-
-# SQL Server files
-*.mdf
-*.ldf
-*.ndf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-*.rptproj.rsuser
-*- [Bb]ackup.rdl
-*- [Bb]ackup ([0-9]).rdl
-*- [Bb]ackup ([0-9][0-9]).rdl
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-.ntvs_analysis.dat
-node_modules/
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
-*.vbw
-
-# Visual Studio 6 auto-generated project file (contains which files were open etc.)
-*.vbp
-
-# Visual Studio 6 workspace and project file (working project files containing files to include in project)
-*.dsw
-*.dsp
-
-# Visual Studio 6 technical files
-*.ncb
-*.aps
-
-# Visual Studio LightSwitch build output
-**/*.HTMLClient/GeneratedArtifacts
-**/*.DesktopClient/GeneratedArtifacts
-**/*.DesktopClient/ModelManifest.xml
-**/*.Server/GeneratedArtifacts
-**/*.Server/ModelManifest.xml
-_Pvt_Extensions
-
-# Paket dependency manager
-.paket/paket.exe
-paket-files/
-
-# FAKE - F# Make
-.fake/
-
-# CodeRush personal settings
-.cr/personal
-
-# Python Tools for Visual Studio (PTVS)
-__pycache__/
-*.pyc
-
-# Cake - Uncomment if you are using it
-# tools/**
-# !tools/packages.config
-
-# Tabs Studio
-*.tss
-
-# Telerik's JustMock configuration file
-*.jmconfig
-
-# BizTalk build output
-*.btp.cs
-*.btm.cs
-*.odx.cs
-*.xsd.cs
-
-# OpenCover UI analysis results
-OpenCover/
-
-# Azure Stream Analytics local run output
-ASALocalRun/
-
-# MSBuild Binary and Structured Log
-*.binlog
-
-# NVidia Nsight GPU debugger configuration file
-*.nvuser
-
-# MFractors (Xamarin productivity tool) working folder
-.mfractor/
-
-# Local History for Visual Studio
-.localhistory/
-
-# Visual Studio History (VSHistory) files
-.vshistory/
-
-# BeatPulse healthcheck temp database
-healthchecksdb
-
-# Backup folder for Package Reference Convert tool in Visual Studio 2017
-MigrationBackup/
-
-# Ionide (cross platform F# VS Code tools) working folder
-.ionide/
-
-# Fody - auto-generated XML schema
-FodyWeavers.xsd
-
-# VS Code files for those working on multiple tools
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-*.code-workspace
-
-# Local History for Visual Studio Code
-.history/
-
-# Windows Installer files from build outputs
-*.cab
-*.msi
-*.msix
-*.msm
-*.msp
-
-# JetBrains Rider
-*.sln.iml
-.idea/
-
-##
-## Visual studio for Mac
-##
-
-
-# globs
-Makefile.in
-*.userprefs
-*.usertasks
-config.make
-config.status
-aclocal.m4
-install-sh
-autom4te.cache/
-*.tar.gz
-tarballs/
-test-results/
-
-# content below from: https://github.com/github/gitignore/blob/main/Global/macOS.gitignore
-# General
-.DS_Store
-.AppleDouble
-.LSOverride
-
-# Icon must end with two \r
-Icon
-
-
-# Thumbnails
-._*
-
-# Files that might appear in the root of a volume
-.DocumentRevisions-V100
-.fseventsd
-.Spotlight-V100
-.TemporaryItems
-.Trashes
-.VolumeIcon.icns
-.com.apple.timemachine.donotpresent
-
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
-
-# content below from: https://github.com/github/gitignore/blob/main/Global/Windows.gitignore
-# Windows thumbnail cache files
-Thumbs.db
-ehthumbs.db
-ehthumbs_vista.db
-
-# Dump file
-*.stackdump
-
-# Folder config file
-[Dd]esktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-# Windows Installer files
-*.cab
-*.msi
-*.msix
-*.msm
-*.msp
-
-# Windows shortcuts
-*.lnk
-
-# Vim temporary swap files
-*.swp
-
-# Single Target Config
-solution-config.props
-# Publish Profiles
-!**/Properties/PublishProfiles/*.pubxml
-/AzureKeyVaultStudio/publish*
diff --git a/src/uno/AzureKeyVaultStudio/.run/AzureKeyVaultStudio.run.xml b/src/uno/AzureKeyVaultStudio/.run/AzureKeyVaultStudio.run.xml
deleted file mode 100644
index 664e17bc..00000000
--- a/src/uno/AzureKeyVaultStudio/.run/AzureKeyVaultStudio.run.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/uno/AzureKeyVaultStudio/.run/Readme.md b/src/uno/AzureKeyVaultStudio/.run/Readme.md
deleted file mode 100644
index 6e72638a..00000000
--- a/src/uno/AzureKeyVaultStudio/.run/Readme.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# About the `.run` folder
-
-This folder is present to add support for the [Rider IDE](https://aka.platform.uno/rider-getstarted). You can remove this folder safely if you're not using Rider.
diff --git a/src/uno/AzureKeyVaultStudio/.vscode/extensions.json b/src/uno/AzureKeyVaultStudio/.vscode/extensions.json
deleted file mode 100644
index a63ad400..00000000
--- a/src/uno/AzureKeyVaultStudio/.vscode/extensions.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "recommendations": [
- "unoplatform.vscode"
- ],
-}
diff --git a/src/uno/AzureKeyVaultStudio/.vscode/launch.json b/src/uno/AzureKeyVaultStudio/.vscode/launch.json
deleted file mode 100644
index b7caa875..00000000
--- a/src/uno/AzureKeyVaultStudio/.vscode/launch.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- // Use IntelliSense to find out which attributes exist for C# debugging
- // Use hover for the description of the existing attributes
- // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
- "version": "0.2.0",
- "configurations": [
- {
- // Use IntelliSense to find out which attributes exist for C# debugging
- // Use hover for the description of the existing attributes
- // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
- "name": "Uno Platform Desktop Debug",
- "type": "coreclr",
- "request": "launch",
- "preLaunchTask": "build-desktop",
- // If you have changed target frameworks, make sure to update the program path.
- "program": "${workspaceFolder}/AzureKeyVaultStudio/bin/Debug/net10.0-desktop/AzureKeyVaultStudio.dll",
- "args": [],
- "launchSettingsProfile": "AzureKeyVaultStudio (Desktop)",
- "env": {
- "DOTNET_MODIFIABLE_ASSEMBLIES": "debug"
- },
- "cwd": "${workspaceFolder}/AzureKeyVaultStudio",
- // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
- "console": "internalConsole",
- "stopAtEntry": false
- },
- ]
-}
diff --git a/src/uno/AzureKeyVaultStudio/.vscode/settings.json b/src/uno/AzureKeyVaultStudio/.vscode/settings.json
deleted file mode 100644
index 3405922d..00000000
--- a/src/uno/AzureKeyVaultStudio/.vscode/settings.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "explorer.fileNesting.enabled": true,
- "explorer.fileNesting.expand": false,
- "explorer.fileNesting.patterns": {
- "*.xaml": "$(capture).xaml.cs"
- },
- "files.associations": {
- "global.json": "jsonc"
- }
-}
diff --git a/src/uno/AzureKeyVaultStudio/.vscode/tasks.json b/src/uno/AzureKeyVaultStudio/.vscode/tasks.json
deleted file mode 100644
index fd5c11fb..00000000
--- a/src/uno/AzureKeyVaultStudio/.vscode/tasks.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "version": "2.0.0",
- "tasks": [
- {
- "label": "build-desktop",
- "command": "dotnet",
- "type": "process",
- "args": [
- "build",
- "${workspaceFolder}/AzureKeyVaultStudio/AzureKeyVaultStudio.csproj",
- "/property:GenerateFullPaths=true",
- "/property:TargetFramework=net10.0-desktop",
- "/consoleloggerparameters:NoSummary"
- ],
- "problemMatcher": "$msCompile"
- },
- {
- "label": "publish-desktop",
- "command": "dotnet",
- "type": "process",
- "args": [
- "publish",
- "${workspaceFolder}/AzureKeyVaultStudio/AzureKeyVaultStudio.csproj",
- "/property:GenerateFullPaths=true",
- "/property:TargetFramework=net10.0-desktop",
- "/consoleloggerparameters:NoSummary"
- ],
- "problemMatcher": "$msCompile"
- }
- ]
-}
diff --git a/src/uno/AzureKeyVaultStudio/.vsconfig b/src/uno/AzureKeyVaultStudio/.vsconfig
deleted file mode 100644
index 73997027..00000000
--- a/src/uno/AzureKeyVaultStudio/.vsconfig
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "version": "1.0",
- "components": [
- "Microsoft.VisualStudio.Component.CoreEditor",
- "Microsoft.VisualStudio.Workload.CoreEditor",
- "Microsoft.NetCore.Component.SDK",
- "Microsoft.NetCore.Component.DevelopmentTools",
- "Microsoft.Net.ComponentGroup.DevelopmentPrerequisites",
- "Microsoft.VisualStudio.Component.TextTemplating",
- "Microsoft.VisualStudio.ComponentGroup.MSIX.Packaging",
- "Microsoft.VisualStudio.Component.ManagedDesktop.Prerequisites",
- "Microsoft.VisualStudio.Component.Debugger.JustInTime",
- "Microsoft.VisualStudio.Workload.ManagedDesktop",
- "Microsoft.VisualStudio.Workload.NetCrossPlat",
- "Microsoft.VisualStudio.Workload.NetCoreTools"
- ]
-}
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/App.xaml b/src/uno/AzureKeyVaultStudio/App.xaml
similarity index 97%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/App.xaml
rename to src/uno/AzureKeyVaultStudio/App.xaml
index e88216c9..8a55d4eb 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/App.xaml
+++ b/src/uno/AzureKeyVaultStudio/App.xaml
@@ -20,6 +20,7 @@
+
{
Debug.WriteLine($"[FirstChance] {e.Exception.GetType().FullName}: {e.Exception.Message}");
@@ -35,22 +46,24 @@ public App()
UnhandledException += (sender, args) =>
{
Debug.WriteLine($"[Unhandled] {args.Exception}");
-#if DEBUG
+
args.Handled = true;
-#else
// Do not swallow in packaged Release while diagnosing.
- args.Handled = false;
-#endif
+ //args.Handled = false;
};
+#endif
}
public Window? MainWindow { get; private set; }
public IHost? Host { get; private set; }
public string AppTitle { get; init; } = "Key Vault Explorer";
+ private IDisposable? _devTools;
+
+
+ [SuppressMessage(category: "Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "Uno.Extensions APIs are used in a way that is safe for trimming in this template context.")]
protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
- _ = DbContext.InitializeDatabase();
var builder = this.CreateBuilder(args)
.UseToolkitNavigation()
@@ -75,18 +88,18 @@ protected override async void OnLaunched(LaunchActivatedEventArgs args)
#if DEBUG
//Uno Platform namespace filter groups
//Uncomment individual methods to see more detailed logging
- // Generic Xaml events
- logBuilder.XamlLogLevel(logLevel);
- // Layout specific messages
- logBuilder.XamlLayoutLogLevel(logLevel);
- // Storage messages
- logBuilder.StorageLogLevel(logLevel);
- // Binding related messages
- logBuilder.XamlBindingLogLevel(logLevel);
- // Binder memory references tracking
- logBuilder.BinderMemoryReferenceLogLevel(logLevel);
- // DevServer and HotReload related
- logBuilder.HotReloadCoreLogLevel(logLevel);
+ //// Generic Xaml events
+ //logBuilder.XamlLogLevel(logLevel);
+ //// Layout specific messages
+ //logBuilder.XamlLayoutLogLevel(logLevel);
+ //// Storage messages
+ //logBuilder.StorageLogLevel(logLevel);
+ //// Binding related messages
+ //logBuilder.XamlBindingLogLevel(logLevel);
+ //// Binder memory references tracking
+ //logBuilder.BinderMemoryReferenceLogLevel(logLevel);
+ //// DevServer and HotReload related
+ //logBuilder.HotReloadCoreLogLevel(logLevel);
#endif
}, enableUnoLogging: true)
@@ -100,7 +113,7 @@ protected override async void OnLaunched(LaunchActivatedEventArgs args)
// Enable localization (see appsettings.json for supported languages)
.UseLocalization()
.UseAuthentication(auth =>
- auth.AddCustom(custom =>
+ auth.AddCustom(custom =>
custom.Login(async (sp, dispatcher, credentials, cancellationToken) =>
{
try
@@ -167,10 +180,11 @@ protected override async void OnLaunched(LaunchActivatedEventArgs args)
MainWindow = builder.Window;
MainWindow.Title = AppTitle;
EnsureEarlyWindow(MainWindow);
- //builder.Build();
+
#if DEBUG
- MainWindow.UseStudio();
+ //MainWindow.UseStudio();
#endif
+
MainWindow.SetWindowIcon();
Host = await builder.NavigateAsync
@@ -186,7 +200,18 @@ protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
await navigator.NavigateViewModelAsync(this, qualifier: Qualifiers.Nested);
}
+
+ _ = DbContext.InitializeDatabase();
+
});
+#if HAS_UNO_SKIA && !WINDOWS && DEBUG
+ _devTools = MainWindow.AttachDevTools(new DevToolsOptions
+ {
+ LaunchView = DevToolsViewKind.VisualTree,
+ ShowAsChildWindow = false,
+ });
+#endif
+
}
private static void RegisterRoutes(IViewRegistry views, IRouteRegistry routes)
@@ -221,20 +246,18 @@ private static void EnsureEarlyWindow(Window window)
window.AppWindow.TitleBar.PreferredTheme = TitleBarTheme.UseDefaultAppMode;
//if (Microsoft.UI.Windowing.AppWindowTitleBar.IsCustomizationSupported())
//{
- //}
//window.ExtendsContentIntoTitleBar = true;
- //var theme = window.GetThemeService();
- //window.AppWindow.TitleBar.PreferredTheme = TitleBarTheme.UseDefaultAppMode;
- //window.AppWindow.TitleBar.PreferredTheme = theme.Theme switch
+ //}
+
+ //var content = window.Content?.XamlRoot?.Content as FrameworkElement;
+
+ //window.AppWindow.TitleBar.PreferredTheme = content?.RequestedTheme switch
//{
- // AppTheme.Light => TitleBarTheme.Light,
- // AppTheme.Dark => TitleBarTheme.Dark,
+ // ElementTheme.Light => TitleBarTheme.Light,
+ // ElementTheme.Dark => TitleBarTheme.Dark,
// _ => TitleBarTheme.UseDefaultAppMode,
//};
-
- //window.AppWindow.TitleBar.ButtonBackgroundColor = Microsoft.UI.Colors.Transparent;
-
window.SystemBackdrop = new MicaBackdrop()
{
Kind = MicaKind.Base,
@@ -244,5 +267,4 @@ private static void EnsureEarlyWindow(Window window)
#endif
}
-
}
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/CustomCompactStyles.xaml b/src/uno/AzureKeyVaultStudio/Assets/CustomCompactStyles.xaml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/CustomCompactStyles.xaml
rename to src/uno/AzureKeyVaultStudio/Assets/CustomCompactStyles.xaml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Icons/appicon.png b/src/uno/AzureKeyVaultStudio/Assets/Icons/appicon.png
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Icons/appicon.png
rename to src/uno/AzureKeyVaultStudio/Assets/Icons/appicon.png
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Icons/icon.svg b/src/uno/AzureKeyVaultStudio/Assets/Icons/icon.svg
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Icons/icon.svg
rename to src/uno/AzureKeyVaultStudio/Assets/Icons/icon.svg
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Icons/icon_foreground.svg b/src/uno/AzureKeyVaultStudio/Assets/Icons/icon_foreground.svg
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Icons/icon_foreground.svg
rename to src/uno/AzureKeyVaultStudio/Assets/Icons/icon_foreground.svg
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Images/AppIcon.png b/src/uno/AzureKeyVaultStudio/Assets/Images/AppIcon.png
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Images/AppIcon.png
rename to src/uno/AzureKeyVaultStudio/Assets/Images/AppIcon.png
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Images/kv-gray-3.png b/src/uno/AzureKeyVaultStudio/Assets/Images/kv-gray-3.png
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Images/kv-gray-3.png
rename to src/uno/AzureKeyVaultStudio/Assets/Images/kv-gray-3.png
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Images/kv-gray.png b/src/uno/AzureKeyVaultStudio/Assets/Images/kv-gray.png
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Images/kv-gray.png
rename to src/uno/AzureKeyVaultStudio/Assets/Images/kv-gray.png
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Images/kv-gray2.png b/src/uno/AzureKeyVaultStudio/Assets/Images/kv-gray2.png
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Images/kv-gray2.png
rename to src/uno/AzureKeyVaultStudio/Assets/Images/kv-gray2.png
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Images/kvgray.svg b/src/uno/AzureKeyVaultStudio/Assets/Images/kvgray.svg
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Images/kvgray.svg
rename to src/uno/AzureKeyVaultStudio/Assets/Images/kvgray.svg
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/SharedAssets.md b/src/uno/AzureKeyVaultStudio/Assets/SharedAssets.md
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/SharedAssets.md
rename to src/uno/AzureKeyVaultStudio/Assets/SharedAssets.md
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Splash/splash_screen.svg b/src/uno/AzureKeyVaultStudio/Assets/Splash/splash_screen.svg
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Splash/splash_screen.svg
rename to src/uno/AzureKeyVaultStudio/Assets/Splash/splash_screen.svg
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Styles.xaml b/src/uno/AzureKeyVaultStudio/Assets/Styles.xaml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Assets/Styles.xaml
rename to src/uno/AzureKeyVaultStudio/Assets/Styles.xaml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/AzureKeyVaultStudio.csproj b/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio.csproj
similarity index 82%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/AzureKeyVaultStudio.csproj
rename to src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio.csproj
index f1de8afa..b5d2e3ed 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/AzureKeyVaultStudio.csproj
+++ b/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio.csproj
@@ -19,7 +19,7 @@
Azure Key Vault Explorer — a cross platform GUI desktop application for aggregating secrets (and keys and certificates) in Azure Key Vault
- en;es;fr;pt-BR
+ en;es;fr;pt-BR;detrue
@@ -62,6 +62,7 @@
falsetruefalse
+ truetruetruefalse
@@ -70,7 +71,6 @@
falsefalsecopy
-
nonefalse$(NoWarn);IL2104
@@ -97,6 +97,8 @@
+
+
@@ -105,6 +107,7 @@
+
@@ -114,6 +117,31 @@
+
+
+
+
+
+ PublicResXFileCodeGenerator
+ Resources.Designer.cs
+
+ PreserveNewest
+
+
+
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+
+ PublicResXFileCodeGenerator
+ Resources.Designer.cs
+
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio.slnx b/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio.slnx
index 349a5556..2d952a7a 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio.slnx
+++ b/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio.slnx
@@ -6,7 +6,5 @@
-
-
-
+
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Database/Subscriptions.cs b/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Database/Subscriptions.cs
deleted file mode 100644
index af202bc0..00000000
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Database/Subscriptions.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace AzureKeyVaultStudio.Database;
-
-public class Subscriptions
-{
- public string DisplayName { get; set; }
- public string SubscriptionId { get; set; }
- public Guid TenantId { get; set; }
-}
\ No newline at end of file
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SecondPage.xaml b/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SecondPage.xaml
deleted file mode 100644
index 75828902..00000000
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SecondPage.xaml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SecondPage.xaml.cs b/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SecondPage.xaml.cs
deleted file mode 100644
index b5b3de11..00000000
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SecondPage.xaml.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace AzureKeyVaultStudio.Presentation;
-
-public sealed partial class SecondPage : Page
-{
- public SecondPage()
- {
- this.InitializeComponent();
- }
-}
-
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Database/DbContext.cs b/src/uno/AzureKeyVaultStudio/Database/DbContext.cs
similarity index 99%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Database/DbContext.cs
rename to src/uno/AzureKeyVaultStudio/Database/DbContext.cs
index 49c528e5..9269eb4c 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Database/DbContext.cs
+++ b/src/uno/AzureKeyVaultStudio/Database/DbContext.cs
@@ -174,7 +174,7 @@ private static async Task TryCreateDatabaseAndOpenConnection()
{
if (_password == null)
{
- var dbPassExists = await Task.Run(() => File.Exists(Constants.DatabasePasswordFilePath));
+ var dbPassExists = File.Exists(Constants.DatabasePasswordFilePath);
if (!dbPassExists)
DatabaseEncryptedPasswordManager.SetSecret($"keyvaultexplorer_{System.Guid.NewGuid().ToString()[..6]}");
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Database/QuickAccess.cs b/src/uno/AzureKeyVaultStudio/Database/QuickAccess.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Database/QuickAccess.cs
rename to src/uno/AzureKeyVaultStudio/Database/QuickAccess.cs
diff --git a/src/uno/AzureKeyVaultStudio/Database/Subscriptions.cs b/src/uno/AzureKeyVaultStudio/Database/Subscriptions.cs
new file mode 100644
index 00000000..395c5090
--- /dev/null
+++ b/src/uno/AzureKeyVaultStudio/Database/Subscriptions.cs
@@ -0,0 +1,8 @@
+namespace AzureKeyVaultStudio.Database;
+
+public class Subscriptions
+{
+ public required string DisplayName { get; set; }
+ public required string SubscriptionId { get; set; }
+ public Guid TenantId { get; set; }
+}
diff --git a/src/uno/AzureKeyVaultStudio/Directory.Build.props b/src/uno/AzureKeyVaultStudio/Directory.Build.props
deleted file mode 100644
index 8daf5692..00000000
--- a/src/uno/AzureKeyVaultStudio/Directory.Build.props
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- enable
- enable
- true
-
-
- $(NoWarn);NU1507;NETSDK1201;PRI257
-
-
diff --git a/src/uno/AzureKeyVaultStudio/Directory.Build.targets b/src/uno/AzureKeyVaultStudio/Directory.Build.targets
deleted file mode 100644
index f75adf7e..00000000
--- a/src/uno/AzureKeyVaultStudio/Directory.Build.targets
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/src/uno/AzureKeyVaultStudio/Directory.Packages.props b/src/uno/AzureKeyVaultStudio/Directory.Packages.props
deleted file mode 100644
index 3afbba96..00000000
--- a/src/uno/AzureKeyVaultStudio/Directory.Packages.props
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Exceptions/KvExceptions.cs b/src/uno/AzureKeyVaultStudio/Exceptions/KvExceptions.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Exceptions/KvExceptions.cs
rename to src/uno/AzureKeyVaultStudio/Exceptions/KvExceptions.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Extensions/DateTimeFormatConverter.cs b/src/uno/AzureKeyVaultStudio/Extensions/DateTimeFormatConverter.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Extensions/DateTimeFormatConverter.cs
rename to src/uno/AzureKeyVaultStudio/Extensions/DateTimeFormatConverter.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Extensions/EnumToBoolConverter.cs b/src/uno/AzureKeyVaultStudio/Extensions/EnumToBoolConverter.cs
similarity index 65%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Extensions/EnumToBoolConverter.cs
rename to src/uno/AzureKeyVaultStudio/Extensions/EnumToBoolConverter.cs
index cb7ad81e..db6d03b9 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Extensions/EnumToBoolConverter.cs
+++ b/src/uno/AzureKeyVaultStudio/Extensions/EnumToBoolConverter.cs
@@ -24,4 +24,18 @@ public object ConvertBack(object value, Type targetType, object parameter, strin
}
}
+public partial class NullToBoolConverter : IValueConverter
+{
+ public object Convert(object value, Type targetType, object parameter, string language)
+ {
+ if (value == null)
+ return false;
+
+ return (bool)value;
+ }
+ public object ConvertBack(object value, Type targetType, object parameter, string language)
+ {
+ throw new NotImplementedException();
+ }
+}
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Extensions/StringExtensions.cs b/src/uno/AzureKeyVaultStudio/Extensions/StringExtensions.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Extensions/StringExtensions.cs
rename to src/uno/AzureKeyVaultStudio/Extensions/StringExtensions.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/GlobalUsings.cs b/src/uno/AzureKeyVaultStudio/GlobalUsings.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/GlobalUsings.cs
rename to src/uno/AzureKeyVaultStudio/GlobalUsings.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Helpers/CrypoRandom.cs b/src/uno/AzureKeyVaultStudio/Helpers/CrypoRandom.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Helpers/CrypoRandom.cs
rename to src/uno/AzureKeyVaultStudio/Helpers/CrypoRandom.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Helpers/PasswordGeneratorHelper.cs b/src/uno/AzureKeyVaultStudio/Helpers/PasswordGeneratorHelper.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Helpers/PasswordGeneratorHelper.cs
rename to src/uno/AzureKeyVaultStudio/Helpers/PasswordGeneratorHelper.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Info.plist b/src/uno/AzureKeyVaultStudio/Info.plist
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Info.plist
rename to src/uno/AzureKeyVaultStudio/Info.plist
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/AddDocumentMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/AddDocumentMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/AddDocumentMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/AddDocumentMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/AddTabMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/AddTabMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/AddTabMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/AddTabMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/AuthenticationStateChangedEvent.cs b/src/uno/AzureKeyVaultStudio/Messages/AuthenticationStateChangedEvent.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/AuthenticationStateChangedEvent.cs
rename to src/uno/AzureKeyVaultStudio/Messages/AuthenticationStateChangedEvent.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/CloseWindowMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/CloseWindowMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/CloseWindowMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/CloseWindowMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/CreateSecretMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/CreateSecretMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/CreateSecretMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/CreateSecretMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/Messages/Messages.cs b/src/uno/AzureKeyVaultStudio/Messages/Messages.cs
new file mode 100644
index 00000000..b805781a
--- /dev/null
+++ b/src/uno/AzureKeyVaultStudio/Messages/Messages.cs
@@ -0,0 +1,5 @@
+using CommunityToolkit.Mvvm.Messaging.Messages;
+
+namespace AzureKeyVaultStudio.Messages;
+
+public sealed record NavigationBackRequestedMessage;
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/OpenItemDetailsWindowMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/OpenItemDetailsWindowMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/OpenItemDetailsWindowMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/OpenItemDetailsWindowMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/PaneStateChangedMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/PaneStateChangedMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/PaneStateChangedMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/PaneStateChangedMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/PinKeyVaultMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/PinKeyVaultMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/PinKeyVaultMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/PinKeyVaultMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/SendInAppNotificationMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/SendInAppNotificationMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/SendInAppNotificationMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/SendInAppNotificationMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/ShowSuccessOperationMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/ShowSuccessOperationMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/ShowSuccessOperationMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/ShowSuccessOperationMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/ShowValidationErrorMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/ShowValidationErrorMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/ShowValidationErrorMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/ShowValidationErrorMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/TogglePaneMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/TogglePaneMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/TogglePaneMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/TogglePaneMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/VaultItemCountChangedMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/VaultItemCountChangedMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/VaultItemCountChangedMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/VaultItemCountChangedMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/VaultItemCountRequestMessage.cs b/src/uno/AzureKeyVaultStudio/Messages/VaultItemCountRequestMessage.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Messages/VaultItemCountRequestMessage.cs
rename to src/uno/AzureKeyVaultStudio/Messages/VaultItemCountRequestMessage.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/AppConfig.cs b/src/uno/AzureKeyVaultStudio/Models/AppConfig.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/AppConfig.cs
rename to src/uno/AzureKeyVaultStudio/Models/AppConfig.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/AuthenticatedUserClaims.cs b/src/uno/AzureKeyVaultStudio/Models/AuthenticatedUserClaims.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/AuthenticatedUserClaims.cs
rename to src/uno/AzureKeyVaultStudio/Models/AuthenticatedUserClaims.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/Constants.cs b/src/uno/AzureKeyVaultStudio/Models/Constants.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/Constants.cs
rename to src/uno/AzureKeyVaultStudio/Models/Constants.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/CustomTokenCredential.cs b/src/uno/AzureKeyVaultStudio/Models/CustomTokenCredential.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/CustomTokenCredential.cs
rename to src/uno/AzureKeyVaultStudio/Models/CustomTokenCredential.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/FilterService.cs b/src/uno/AzureKeyVaultStudio/Models/FilterService.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/FilterService.cs
rename to src/uno/AzureKeyVaultStudio/Models/FilterService.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/KeyVaultModel.cs b/src/uno/AzureKeyVaultStudio/Models/KeyVaultModel.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/KeyVaultModel.cs
rename to src/uno/AzureKeyVaultStudio/Models/KeyVaultModel.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/KeyVaultResourcePlaceholder.cs b/src/uno/AzureKeyVaultStudio/Models/KeyVaultResourcePlaceholder.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/KeyVaultResourcePlaceholder.cs
rename to src/uno/AzureKeyVaultStudio/Models/KeyVaultResourcePlaceholder.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/KeyVaultValuesAmalgamation.cs b/src/uno/AzureKeyVaultStudio/Models/KeyVaultValuesAmalgamation.cs
similarity index 98%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/KeyVaultValuesAmalgamation.cs
rename to src/uno/AzureKeyVaultStudio/Models/KeyVaultValuesAmalgamation.cs
index a7101af0..8c5cda57 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/KeyVaultValuesAmalgamation.cs
+++ b/src/uno/AzureKeyVaultStudio/Models/KeyVaultValuesAmalgamation.cs
@@ -250,3 +250,8 @@ public partial class TagItem : ObservableObject
[ObservableProperty]
public partial string Value { get; set; } = string.Empty;
}
+public sealed class ItemTypeOption
+{
+ public required string Label { get; init; }
+ public required KeyVaultItemType Type { get; init; }
+}
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/SubscriptionDataItemModel.cs b/src/uno/AzureKeyVaultStudio/Models/SubscriptionDataItemModel.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Models/SubscriptionDataItemModel.cs
rename to src/uno/AzureKeyVaultStudio/Models/SubscriptionDataItemModel.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Package.appxmanifest b/src/uno/AzureKeyVaultStudio/Package.appxmanifest
similarity index 96%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Package.appxmanifest
rename to src/uno/AzureKeyVaultStudio/Package.appxmanifest
index 118d56bd..b6b86bc4 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Package.appxmanifest
+++ b/src/uno/AzureKeyVaultStudio/Package.appxmanifest
@@ -6,7 +6,7 @@
xmlns:uap18="http://schemas.microsoft.com/appx/manifest/uap/windows10/18"
IgnorableNamespaces="uap rescap uap18">
-
+ Key Vault ExplorerArthur Thomas IV
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Platforms/Desktop/Program.cs b/src/uno/AzureKeyVaultStudio/Platforms/Desktop/Program.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Platforms/Desktop/Program.cs
rename to src/uno/AzureKeyVaultStudio/Platforms/Desktop/Program.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/LoginPage.xaml b/src/uno/AzureKeyVaultStudio/Presentation/LoginPage.xaml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/LoginPage.xaml
rename to src/uno/AzureKeyVaultStudio/Presentation/LoginPage.xaml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/LoginPage.xaml.cs b/src/uno/AzureKeyVaultStudio/Presentation/LoginPage.xaml.cs
similarity index 70%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/LoginPage.xaml.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/LoginPage.xaml.cs
index beabe6d3..e67d2bfc 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/LoginPage.xaml.cs
+++ b/src/uno/AzureKeyVaultStudio/Presentation/LoginPage.xaml.cs
@@ -2,7 +2,7 @@ namespace AzureKeyVaultStudio.Presentation;
public sealed partial class LoginPage : Page
{
- public LoginViewModel ViewModel => DataContext as LoginViewModel;
+ public LoginViewModel? ViewModel => DataContext as LoginViewModel;
public LoginPage()
{
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/LoginViewModel.cs b/src/uno/AzureKeyVaultStudio/Presentation/LoginViewModel.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/LoginViewModel.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/LoginViewModel.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/MainPage.xaml b/src/uno/AzureKeyVaultStudio/Presentation/MainPage.xaml
similarity index 99%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/MainPage.xaml
rename to src/uno/AzureKeyVaultStudio/Presentation/MainPage.xaml
index c07d3e26..93f8c12e 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/MainPage.xaml
+++ b/src/uno/AzureKeyVaultStudio/Presentation/MainPage.xaml
@@ -99,7 +99,7 @@
+ DataContext="{x:Bind KeyVaultTreeViewModel, Mode=OneWay}" />
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/MainPage.xaml.cs b/src/uno/AzureKeyVaultStudio/Presentation/MainPage.xaml.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/MainPage.xaml.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/MainPage.xaml.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/MainViewModel.cs b/src/uno/AzureKeyVaultStudio/Presentation/MainViewModel.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/MainViewModel.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/MainViewModel.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/PasswordGeneratorPage.xaml b/src/uno/AzureKeyVaultStudio/Presentation/PasswordGeneratorPage.xaml
similarity index 98%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/PasswordGeneratorPage.xaml
rename to src/uno/AzureKeyVaultStudio/Presentation/PasswordGeneratorPage.xaml
index 2382ce73..544ab8f4 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/PasswordGeneratorPage.xaml
+++ b/src/uno/AzureKeyVaultStudio/Presentation/PasswordGeneratorPage.xaml
@@ -8,7 +8,7 @@
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/PasswordGeneratorPage.xaml.cs b/src/uno/AzureKeyVaultStudio/Presentation/PasswordGeneratorPage.xaml.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/PasswordGeneratorPage.xaml.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/PasswordGeneratorPage.xaml.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SettingsPage.xaml b/src/uno/AzureKeyVaultStudio/Presentation/SettingsPage.xaml
similarity index 94%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SettingsPage.xaml
rename to src/uno/AzureKeyVaultStudio/Presentation/SettingsPage.xaml
index acb5a01a..e0e390de 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SettingsPage.xaml
+++ b/src/uno/AzureKeyVaultStudio/Presentation/SettingsPage.xaml
@@ -5,6 +5,7 @@
xmlns:controls="using:CommunityToolkit.WinUI.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ext="using:AzureKeyVaultStudio.Extensions"
+ xmlns:globalization="using:System.Globalization"
xmlns:local="using:AzureKeyVaultStudio.Presentation"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:uc="using:AzureKeyVaultStudio.UserControls"
@@ -118,7 +119,7 @@
Name="SettingsPageTenantIdTextBox"
x:Uid="SettingsPageTenantIdTextBox"
MinWidth="325"
- IsEnabled="{Binding IsChecked, ElementName=SettingsPageTenantIdCheckbox}"
+ IsEnabled="{x:Bind SettingsPageTenantIdCheckbox.IsChecked, Mode=OneWay, Converter={StaticResource NullToBoolConverter}}"
Text="{x:Bind ViewModel.CustomTenantId, Mode=TwoWay}" />
@@ -134,7 +135,7 @@
Name="SettingsPageClientIdTextBox"
x:Uid="SettingsPageClientIdTextBox"
MinWidth="325"
- IsEnabled="{Binding IsChecked, ElementName=SettingsPageClientIdCheckbox}"
+ IsEnabled="{x:Bind SettingsPageClientIdCheckbox.IsChecked, Mode=OneWay, Converter={StaticResource NullToBoolConverter}}"
Text="{x:Bind ViewModel.CustomClientId, Mode=TwoWay}" />
@@ -184,11 +185,15 @@
+
-
+
+
+
+
+
+
+ (string key, T defaultValue) where T : struct, Enum
public async Task ToggleThemeChangeAsync(AppTheme theme)
{
await _themeService.SetThemeAsync(theme);
+ var window = (Application.Current as App)?.MainWindow;
+
+ window.AppWindow.TitleBar.PreferredTheme = theme switch
+ {
+ AppTheme.Light => TitleBarTheme.Light,
+ AppTheme.Dark => TitleBarTheme.Dark,
+ _ => TitleBarTheme.UseDefaultAppMode,
+ };
+
//SelectedTheme = theme;
}
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/Shell.xaml b/src/uno/AzureKeyVaultStudio/Presentation/Shell.xaml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/Shell.xaml
rename to src/uno/AzureKeyVaultStudio/Presentation/Shell.xaml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/Shell.xaml.cs b/src/uno/AzureKeyVaultStudio/Presentation/Shell.xaml.cs
similarity index 83%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/Shell.xaml.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/Shell.xaml.cs
index 4066684c..9c812f5a 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/Shell.xaml.cs
+++ b/src/uno/AzureKeyVaultStudio/Presentation/Shell.xaml.cs
@@ -1,3 +1,4 @@
+using System.Reflection;
using AzureKeyVaultStudio.Messages;
using CommunityToolkit.Mvvm.Messaging;
using CommunityToolkit.WinUI.Behaviors;
@@ -13,6 +14,15 @@ public Shell()
{
this.InitializeComponent();
WeakReferenceMessenger.Default.Register(this, (r, m) => ShowInAppNotification(m.Notification));
+ PointerPressed += Shell_PointerPressed;
+ }
+
+ private async void Shell_PointerPressed(object sender, Microsoft.UI.Xaml.Input.PointerRoutedEventArgs e)
+ {
+ if (e.GetCurrentPoint(sender as UIElement).Properties.IsXButton1Pressed)
+ {
+ WeakReferenceMessenger.Default.Send(new NavigationBackRequestedMessage());
+ }
}
private void ShowInAppNotification(Notification notification)
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ShellViewModel.cs b/src/uno/AzureKeyVaultStudio/Presentation/ShellViewModel.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ShellViewModel.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/ShellViewModel.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SubscriptionViewModel.cs b/src/uno/AzureKeyVaultStudio/Presentation/SubscriptionViewModel.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SubscriptionViewModel.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/SubscriptionViewModel.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SubscriptionsPage.xaml b/src/uno/AzureKeyVaultStudio/Presentation/SubscriptionsPage.xaml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SubscriptionsPage.xaml
rename to src/uno/AzureKeyVaultStudio/Presentation/SubscriptionsPage.xaml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SubscriptionsPage.xaml.cs b/src/uno/AzureKeyVaultStudio/Presentation/SubscriptionsPage.xaml.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/SubscriptionsPage.xaml.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/SubscriptionsPage.xaml.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/TabsControl.xaml b/src/uno/AzureKeyVaultStudio/Presentation/TabsControl.xaml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/TabsControl.xaml
rename to src/uno/AzureKeyVaultStudio/Presentation/TabsControl.xaml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/TabsControl.xaml.cs b/src/uno/AzureKeyVaultStudio/Presentation/TabsControl.xaml.cs
similarity index 99%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/TabsControl.xaml.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/TabsControl.xaml.cs
index 1dc4feb8..29c9c7f8 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/TabsControl.xaml.cs
+++ b/src/uno/AzureKeyVaultStudio/Presentation/TabsControl.xaml.cs
@@ -272,7 +272,7 @@ private async void OpenExternalVaultButton_Click(object sender, RoutedEventArgs
var dialog = new ExternalVaultDialog
{
XamlRoot = XamlRoot,
- RequestedTheme = this.ActualTheme,
+ RequestedTheme = ActualTheme,
Title = stringLocalizer?["OpenExternalDialogTitle"] ?? "Open External",
IsPrimaryButtonEnabled = true,
PrimaryButtonText = stringLocalizer?["SubmitButtonText"] ?? "Submit",
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/TabsModels/ITabContainer.cs b/src/uno/AzureKeyVaultStudio/Presentation/TabsModels/ITabContainer.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/TabsModels/ITabContainer.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/TabsModels/ITabContainer.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/TabsModels/PasswordGeneratorTab.cs b/src/uno/AzureKeyVaultStudio/Presentation/TabsModels/PasswordGeneratorTab.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/TabsModels/PasswordGeneratorTab.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/TabsModels/PasswordGeneratorTab.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/TabsModels/VaultTabContainer.cs b/src/uno/AzureKeyVaultStudio/Presentation/TabsModels/VaultTabContainer.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/TabsModels/VaultTabContainer.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/TabsModels/VaultTabContainer.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/VaultTabContentPage.xaml b/src/uno/AzureKeyVaultStudio/Presentation/VaultTabContentPage.xaml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/VaultTabContentPage.xaml
rename to src/uno/AzureKeyVaultStudio/Presentation/VaultTabContentPage.xaml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/VaultTabContentPage.xaml.cs b/src/uno/AzureKeyVaultStudio/Presentation/VaultTabContentPage.xaml.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/VaultTabContentPage.xaml.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/VaultTabContentPage.xaml.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ViewModels/ExternalVaultDialogViewModel.cs b/src/uno/AzureKeyVaultStudio/Presentation/ViewModels/ExternalVaultDialogViewModel.cs
similarity index 90%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ViewModels/ExternalVaultDialogViewModel.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/ViewModels/ExternalVaultDialogViewModel.cs
index 5150e682..37afc97b 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ViewModels/ExternalVaultDialogViewModel.cs
+++ b/src/uno/AzureKeyVaultStudio/Presentation/ViewModels/ExternalVaultDialogViewModel.cs
@@ -8,8 +8,8 @@ namespace AzureKeyVaultStudio.Presentation.ViewModels;
public partial class ExternalVaultDialogViewModel : ObservableValidator
{
- private readonly VaultService _vaultService;
- public Guid MessengerToken { get; } = Guid.NewGuid();
+ private readonly VaultService? _vaultService;
+ public Guid MessengerToken { get; init; } = Guid.NewGuid();
public ExternalVaultDialogViewModel()
{
@@ -41,6 +41,8 @@ private async Task Submit()
{
try
{
+ if (_vaultService == null)
+ return;
var model = await _vaultService.GetKeyVaultResource(subscriptionId: SubscriptionId.Trim(), resourceGroupName: ResourceGroupName.Trim(), vaultName: KeyVaultName.Trim());
WeakReferenceMessenger.Default.Send(new AddDocumentMessage(model.Data));
WeakReferenceMessenger.Default.Send(new PinKeyVaultMessage(model));
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ViewModels/ExternalVaultItemDialogViewModel.cs b/src/uno/AzureKeyVaultStudio/Presentation/ViewModels/ExternalVaultItemDialogViewModel.cs
similarity index 71%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ViewModels/ExternalVaultItemDialogViewModel.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/ViewModels/ExternalVaultItemDialogViewModel.cs
index b0ba5b3e..ffbdc7b9 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ViewModels/ExternalVaultItemDialogViewModel.cs
+++ b/src/uno/AzureKeyVaultStudio/Presentation/ViewModels/ExternalVaultItemDialogViewModel.cs
@@ -9,28 +9,32 @@ namespace AzureKeyVaultStudio.Presentation.ViewModels;
public partial class ExternalVaultItemDialogViewModel : ObservableValidator
{
private readonly VaultService _vaultService;
+ private readonly IStringLocalizer _localizer;
public Guid MessengerToken { get; } = Guid.NewGuid();
public ExternalVaultItemDialogViewModel()
{
_vaultService = (Application.Current as App).Host?.Services?.GetRequiredService();
+ _localizer = (Application.Current as App).Host?.Services?.GetRequiredService();
+
+ ItemTypeOption Key = new() { Label = _localizer?["KeyName"] ?? "Key", Type = KeyVaultItemType.Key };
+ ItemTypeOption Secret = new() { Label = _localizer?["SecretName"] ?? "Secret", Type = KeyVaultItemType.Secret };
+ ItemTypeOption Certificate = new() { Label = _localizer?["CertificateName"] ?? "Certificate", Type = KeyVaultItemType.Certificate };
+
+ ItemTypeOptions = [Secret, Key, Certificate];
+
+ SelectedItemType = Secret;
}
[Required]
[ObservableProperty]
public partial string ExternalItemVaultName { get; set; } = "";
- // todo use localiozation
- public List> ItemTypeOptions { get; } =
-[
- new("Certificate", KeyVaultItemType.Certificate),
- new("Secret", KeyVaultItemType.Secret),
- new("Key", KeyVaultItemType.Key),
-];
+ public List ItemTypeOptions { get; init; }
[Required]
[ObservableProperty]
- public partial KeyValuePair SelectedItemType { get; set; } = new("Secret", KeyVaultItemType.Secret);
+ public partial ItemTypeOption SelectedItemType { get; set; }
[Required]
[ObservableProperty]
@@ -50,20 +54,25 @@ private async Task Submit()
IReadOnlyList item;
try
{
- if (SelectedItemType.Value == KeyVaultItemType.Secret)
+ if (SelectedItemType.Type == KeyVaultItemType.Secret)
item = KeyVaultItemProperties.FromSecretProperties(await _vaultService.GetSecretProperties(name: ExternalItemVaultName, keyVaultUri: itemUri));
- else if (SelectedItemType.Value == KeyVaultItemType.Key)
+ else if (SelectedItemType.Type == KeyVaultItemType.Key)
item = KeyVaultItemProperties.FromKeyProperties(await _vaultService.GetKeyProperties(name: ExternalItemVaultName, keyVaultUri: itemUri));
- else if (SelectedItemType.Value == KeyVaultItemType.Certificate)
+ else if (SelectedItemType.Type == KeyVaultItemType.Certificate)
item = KeyVaultItemProperties.FromCertificateProperties(await _vaultService.GetCertificateProperties(name: ExternalItemVaultName, keyVaultUri: itemUri));
else
throw new InvalidOperationException("Invalid item type selected");
+
+
+ if (item is null|| item.Count == 0)
+ throw new InvalidOperationException(_localizer["ExternalItemNotRetrievedExceptionMessage"] ?? "The item could not be retrieved.");
+
var latestItem = item.FirstOrDefault();
var kvAmalgamation = new KeyVaultItemProperties
{
VaultUri = latestItem.VaultUri,
- Type = SelectedItemType.Value,
+ Type = SelectedItemType.Type,
Name = ExternalItemVaultName,
Id = latestItem.Id,
Version = latestItem.Version,
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ViewModels/PasswordGeneratorViewModel.cs b/src/uno/AzureKeyVaultStudio/Presentation/ViewModels/PasswordGeneratorViewModel.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ViewModels/PasswordGeneratorViewModel.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/ViewModels/PasswordGeneratorViewModel.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ViewModels/TabsControlViewModel.cs b/src/uno/AzureKeyVaultStudio/Presentation/ViewModels/TabsControlViewModel.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ViewModels/TabsControlViewModel.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/ViewModels/TabsControlViewModel.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ViewModels/VaultViewModel.cs b/src/uno/AzureKeyVaultStudio/Presentation/ViewModels/VaultViewModel.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Presentation/ViewModels/VaultViewModel.cs
rename to src/uno/AzureKeyVaultStudio/Presentation/ViewModels/VaultViewModel.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Properties/PublishProfiles/win-arm64.pubxml b/src/uno/AzureKeyVaultStudio/Properties/PublishProfiles/win-arm64.pubxml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Properties/PublishProfiles/win-arm64.pubxml
rename to src/uno/AzureKeyVaultStudio/Properties/PublishProfiles/win-arm64.pubxml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Properties/PublishProfiles/win-x64.pubxml b/src/uno/AzureKeyVaultStudio/Properties/PublishProfiles/win-x64.pubxml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Properties/PublishProfiles/win-x64.pubxml
rename to src/uno/AzureKeyVaultStudio/Properties/PublishProfiles/win-x64.pubxml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Properties/PublishProfiles/win-x86.pubxml b/src/uno/AzureKeyVaultStudio/Properties/PublishProfiles/win-x86.pubxml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Properties/PublishProfiles/win-x86.pubxml
rename to src/uno/AzureKeyVaultStudio/Properties/PublishProfiles/win-x86.pubxml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Properties/launchSettings.json b/src/uno/AzureKeyVaultStudio/Properties/launchSettings.json
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Properties/launchSettings.json
rename to src/uno/AzureKeyVaultStudio/Properties/launchSettings.json
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/ReadMe.md b/src/uno/AzureKeyVaultStudio/ReadMe.md
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/ReadMe.md
rename to src/uno/AzureKeyVaultStudio/ReadMe.md
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/AuthService.cs b/src/uno/AzureKeyVaultStudio/Services/AuthService.cs
similarity index 96%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/AuthService.cs
rename to src/uno/AzureKeyVaultStudio/Services/AuthService.cs
index 609cba28..2565c7e1 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/AuthService.cs
+++ b/src/uno/AzureKeyVaultStudio/Services/AuthService.cs
@@ -10,7 +10,8 @@ namespace AzureKeyVaultStudio.Services;
public class AuthService
{
- public IPublicClientApplication authenticationClient;
+ private Lazy _authenticationClient;
+ public IPublicClientApplication authenticationClient => _authenticationClient.Value;
public MsalCacheHelper msalCacheHelper;
private readonly ILocalSettingsService _localSettings;
private readonly ILogger _logger;
@@ -24,6 +25,14 @@ public AuthService(ILocalSettingsService localSettings, ILogger log
{
_localSettings = localSettings;
_logger = logger;
+
+ _authenticationClient = new Lazy(
+ BuildAuthenticationClient,
+ LazyThreadSafetyMode.ExecutionAndPublication);
+ }
+
+ private IPublicClientApplication BuildAuthenticationClient()
+ {
string customClientId = _localSettings.GetValue(Constants.CustomClientIdName, "");
var isCustomClientIdWanted = _localSettings.GetValue(Constants.SettingsPageClientIdCheckbox, false);
string clientId = isCustomClientIdWanted && !string.IsNullOrEmpty(customClientId) ? customClientId : Constants.ClientId;
@@ -46,8 +55,6 @@ public AuthService(ILocalSettingsService localSettings, ILogger log
else
builder = builder.WithAuthority(CloudInstance, AadAuthorityAudience.AzureAdMultipleOrgs);
- authenticationClient = builder.Build();
-
AzurePortalBaseUri = CloudInstance switch
{
AzureCloudInstance.AzureChina => "https://portal.azure.cn",
@@ -56,7 +63,7 @@ public AuthService(ILocalSettingsService localSettings, ILogger log
_ => "https://portal.azure.com"
};
- _ = InitializeCache();
+ return builder.Build();
}
public IAccount? Account { get; private set; }
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/DatabaseEncryptedPasswordManager.cs b/src/uno/AzureKeyVaultStudio/Services/DatabaseEncryptedPasswordManager.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/DatabaseEncryptedPasswordManager.cs
rename to src/uno/AzureKeyVaultStudio/Services/DatabaseEncryptedPasswordManager.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/ILocalSettingsService.cs b/src/uno/AzureKeyVaultStudio/Services/ILocalSettingsService.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/ILocalSettingsService.cs
rename to src/uno/AzureKeyVaultStudio/Services/ILocalSettingsService.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/LocalSettingsService.cs b/src/uno/AzureKeyVaultStudio/Services/LocalSettingsService.cs
similarity index 55%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/LocalSettingsService.cs
rename to src/uno/AzureKeyVaultStudio/Services/LocalSettingsService.cs
index 2ec4aa68..de9e0790 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/LocalSettingsService.cs
+++ b/src/uno/AzureKeyVaultStudio/Services/LocalSettingsService.cs
@@ -1,4 +1,7 @@
+using System.Globalization;
using System.Text.Json;
+using System.Text.Json.Serialization;
+using System.Text.Json.Serialization.Metadata;
namespace AzureKeyVaultStudio.Services;
@@ -36,7 +39,7 @@ public static void Initialize(ILocalSettingsService service)
}
}
-internal sealed class ApplicationDataLocalSettingsService : ILocalSettingsService
+internal sealed class ApplicationDataLocalSettingsService : ILocalSettingsService
{
private readonly ApplicationDataContainer _container;
@@ -99,6 +102,30 @@ public bool TryGetValue(string key, out TValue value)
}
}
+[JsonSourceGenerationOptions(WriteIndented = true)]
+[JsonSerializable(typeof(Dictionary))]
+[JsonSerializable(typeof(string))]
+[JsonSerializable(typeof(bool))]
+[JsonSerializable(typeof(int))]
+[JsonSerializable(typeof(long))]
+[JsonSerializable(typeof(double))]
+[JsonSerializable(typeof(float))]
+[JsonSerializable(typeof(decimal))]
+internal partial class LocalSettingsJsonContext : JsonSerializerContext
+{
+ public static JsonTypeInfo? TryGetTypeInfo()
+ {
+ if (typeof(TValue) == typeof(string)) return (JsonTypeInfo)(object)Default.String;
+ if (typeof(TValue) == typeof(bool)) return (JsonTypeInfo)(object)Default.Boolean;
+ if (typeof(TValue) == typeof(int)) return (JsonTypeInfo)(object)Default.Int32;
+ if (typeof(TValue) == typeof(long)) return (JsonTypeInfo)(object)Default.Int64;
+ if (typeof(TValue) == typeof(double)) return (JsonTypeInfo)(object)Default.Double;
+ if (typeof(TValue) == typeof(float)) return (JsonTypeInfo)(object)Default.Single;
+ if (typeof(TValue) == typeof(decimal)) return (JsonTypeInfo)(object)Default.Decimal;
+ return null;
+ }
+}
+
internal sealed class FileLocalSettingsService : ILocalSettingsService
{
private readonly string _filePath;
@@ -128,14 +155,29 @@ public void SetValue(string key, TValue value)
if (value is null)
{
if (_values.Remove(key))
- {
PersistValues();
- }
+ return;
+ }
+ if (typeof(TValue) == typeof(CultureInfo))
+ {
+ var cultureName = ((CultureInfo)(object)value).Name;
+ _values[key] = JsonSerializer.SerializeToElement(cultureName, LocalSettingsJsonContext.Default.String);
+ PersistValues();
return;
}
- _values[key] = JsonSerializer.SerializeToElement(value);
+ if (typeof(TValue).IsEnum)
+ {
+ _values[key] = JsonSerializer.SerializeToElement(value.ToString(), LocalSettingsJsonContext.Default.String);
+ PersistValues();
+ return;
+ }
+
+ var typeInfo = LocalSettingsJsonContext.TryGetTypeInfo()
+ ?? throw new NotSupportedException($"Type '{typeof(TValue)}' is not supported by LocalSettings source-gen.");
+
+ _values[key] = JsonSerializer.SerializeToElement(value, typeInfo);
PersistValues();
}
}
@@ -152,7 +194,46 @@ public bool TryGetValue(string key, out TValue value)
try
{
- value = JsonSerializer.Deserialize(element.GetRawText())!;
+ if (typeof(TValue) == typeof(CultureInfo))
+ {
+ var name = JsonSerializer.Deserialize(element, LocalSettingsJsonContext.Default.String);
+ if (string.IsNullOrWhiteSpace(name))
+ {
+ value = default!;
+ return false;
+ }
+
+ value = (TValue)(object)new CultureInfo(name);
+ return true;
+ }
+
+ if (typeof(TValue).IsEnum)
+ {
+ if (element.ValueKind == JsonValueKind.String &&
+ Enum.TryParse(typeof(TValue), element.GetString(), true, out var parsed))
+ {
+ value = (TValue)parsed;
+ return true;
+ }
+
+ if (element.ValueKind == JsonValueKind.Number && element.TryGetInt32(out var n))
+ {
+ value = (TValue)Enum.ToObject(typeof(TValue), n);
+ return true;
+ }
+
+ value = default!;
+ return false;
+ }
+
+ var typeInfo = LocalSettingsJsonContext.TryGetTypeInfo();
+ if (typeInfo is null)
+ {
+ value = default!;
+ return false;
+ }
+
+ value = JsonSerializer.Deserialize(element, typeInfo)!;
return true;
}
catch
@@ -187,8 +268,12 @@ private void PersistValues()
if (!string.IsNullOrEmpty(directory))
Directory.CreateDirectory(directory);
- var options = new JsonSerializerOptions { WriteIndented = true };
- var json = JsonSerializer.Serialize(_values, options);
+ var json = JsonSerializer.Serialize(
+ _values,
+ LocalSettingsJsonContext.Default.DictionaryStringJsonElement);
+
File.WriteAllText(_filePath, json);
}
+
+
}
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/MacOSKeyChainService.cs b/src/uno/AzureKeyVaultStudio/Services/MacOSKeyChainService.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/MacOSKeyChainService.cs
rename to src/uno/AzureKeyVaultStudio/Services/MacOSKeyChainService.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/VaultService.cs b/src/uno/AzureKeyVaultStudio/Services/VaultService.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Services/VaultService.cs
rename to src/uno/AzureKeyVaultStudio/Services/VaultService.cs
diff --git a/src/uno/AzureKeyVaultStudio/Strings/Resources.Designer.cs b/src/uno/AzureKeyVaultStudio/Strings/Resources.Designer.cs
new file mode 100644
index 00000000..227ca711
--- /dev/null
+++ b/src/uno/AzureKeyVaultStudio/Strings/Resources.Designer.cs
@@ -0,0 +1,90 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace AzureKeyVaultStudio.Strings {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ public class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AzureKeyVaultStudio.Strings.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The field {0} must be between {1} and {2} characters long..
+ ///
+ public static string SecretNameErrorMessage {
+ get {
+ return ResourceManager.GetString("SecretNameErrorMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The field {0} is not a valid name.
+ ///
+ public static string SecretNameRegularExpressionErrorMessage {
+ get {
+ return ResourceManager.GetString("SecretNameRegularExpressionErrorMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The secret value is required..
+ ///
+ public static string SecretValueRequiredErrorMessage {
+ get {
+ return ResourceManager.GetString("SecretValueRequiredErrorMessage", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/src/uno/AzureKeyVaultStudio/Strings/Resources.de.resx b/src/uno/AzureKeyVaultStudio/Strings/Resources.de.resx
new file mode 100644
index 00000000..ee176cdb
--- /dev/null
+++ b/src/uno/AzureKeyVaultStudio/Strings/Resources.de.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Das Feld {0} muss zwischen {1} und {2} Zeichen lang sein.
+
+
+ Das Feld {0} ist kein gültiger Name.
+
+
+ Der Geheimniswert ist erforderlich.
+
+
\ No newline at end of file
diff --git a/src/uno/AzureKeyVaultStudio/Strings/Resources.es.resx b/src/uno/AzureKeyVaultStudio/Strings/Resources.es.resx
new file mode 100644
index 00000000..4da112f8
--- /dev/null
+++ b/src/uno/AzureKeyVaultStudio/Strings/Resources.es.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ El campo {0} debe tener entre {1} y {2} caracteres.
+
+
+ El campo {0} no es un nombre válido.
+
+
+ El valor del secreto es obligatorio.
+
+
\ No newline at end of file
diff --git a/src/uno/AzureKeyVaultStudio/Strings/Resources.fr.resx b/src/uno/AzureKeyVaultStudio/Strings/Resources.fr.resx
new file mode 100644
index 00000000..a3f8a867
--- /dev/null
+++ b/src/uno/AzureKeyVaultStudio/Strings/Resources.fr.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Le champ {0} doit contenir entre {1} et {2} caractères.
+
+
+ Le champ {0} n’est pas un nom valide.
+
+
+ La valeur du secret est requise.
+
+
\ No newline at end of file
diff --git a/src/uno/AzureKeyVaultStudio/Strings/Resources.pt-BR.resx b/src/uno/AzureKeyVaultStudio/Strings/Resources.pt-BR.resx
new file mode 100644
index 00000000..20dcf768
--- /dev/null
+++ b/src/uno/AzureKeyVaultStudio/Strings/Resources.pt-BR.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ O campo {0} deve ter entre {1} e {2} caracteres.
+
+
+ O campo {0} não é um nome válido.
+
+
+ O valor do segredo é obrigatório.
+
+
\ No newline at end of file
diff --git a/src/uno/AzureKeyVaultStudio/Strings/Resources.resx b/src/uno/AzureKeyVaultStudio/Strings/Resources.resx
new file mode 100644
index 00000000..5976534a
--- /dev/null
+++ b/src/uno/AzureKeyVaultStudio/Strings/Resources.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ The field {0} must be between {1} and {2} characters long.
+
+
+ The field {0} is not a valid name
+
+
+ The secret value is required.
+
+
\ No newline at end of file
diff --git a/src/uno/AzureKeyVaultStudio/Strings/de/Resources.resw b/src/uno/AzureKeyVaultStudio/Strings/de/Resources.resw
new file mode 100644
index 00000000..9c0c2185
--- /dev/null
+++ b/src/uno/AzureKeyVaultStudio/Strings/de/Resources.resw
@@ -0,0 +1,723 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ AzureKeyVaultExplorer-de
+
+
+ Verfügbare Abonnements aktualisieren
+
+
+ Einstellungen
+
+
+ Alle erweitern
+
+
+ Externen Tresor öffnen
+
+
+ Alle reduzieren
+
+
+ Aktualisieren
+
+
+ Erweitern
+
+
+ Externen Tresor öffnen
+
+
+ Reduzieren
+
+
+ Hell
+
+
+ Ressourcen, Tresore durchsuchen (Strg+K)
+
+
+ Benutzerdefinierte Client-ID / Anwendungs-ID verwenden (Neustart der Anwendung erforderlich)
+
+
+ Benutzerdefinierte Mandanten-ID / Verzeichnis-ID verwenden (Neustart der Anwendung erforderlich)
+
+
+ Azure Client-ID: z. B. 18405e16-1ba4aca2..
+
+
+ Azure Mandanten-ID: z. B. 18405e16-1ba4aca2..
+
+
+ Dies leert die Zwischenablage nach einer festgelegten Zeitspanne in Sekunden, wenn Strg+C oder eine beliebige Schaltfläche „Kopieren" verwendet wird
+
+
+ Zwischenablage leeren nach
+
+
+ Bei Key Vault Explorer für Azure mit Microsoft-Konto anmelden
+
+
+ Aktuelles Konto aus dem Cache entfernen und abmelden
+
+
+ SQLite-Datenbank mit allen gespeicherten Elementen löschen
+
+
+ Datenbankdatei und zugehörige geschützte Dateien löschen
+
+
+ Anmelden
+
+
+ Abmelden
+
+
+ Datenbank löschen
+
+
+ Anwendung zurücksetzen
+
+
+ Namen, Tags, Inhaltstypen durchsuchen (Strg+F)
+
+
+ Wert kopieren
+
+
+ Eigenschaften anzeigen
+
+
+ Im Azure-Portal öffnen
+
+
+ Link kopieren
+
+
+ Auswahl aufheben
+
+
+ Alle auswählen
+
+
+ Aktualisieren
+
+
+ Weitere Abonnements laden
+
+
+ Speichern
+
+
+ Speichern
+
+
+ Gespeichert
+
+
+ Bitte geben Sie einen gültigen Geheimnisnamen an. Geheimnisnamen dürfen nur alphanumerische Zeichen und Bindestriche enthalten. Der angegebene Wert kann für den Betrieb des Dienstes global kopiert werden. Der angegebene Wert sollte keine personenbezogenen oder vertraulichen Informationen enthalten.
+
+
+ Absenden
+
+
+ EIGENSCHAFTEN
+
+
+ VERSIONEN
+
+
+ Geheimnis eingeben
+
+
+ Legt fest, wann diese Ressource aktiv wird. Dies setzt die Eigenschaft „nbf" der Ressource.
+
+
+ Aktivierungsdatum festlegen
+
+
+ Ablaufdatum festlegen
+
+
+ Legt fest, wann diese Ressource inaktiv wird. Dies setzt die Eigenschaft „exp" der Ressource.
+
+
+ Explorer
+
+
+ Explorer ein-/ausblenden (Strg+B)
+
+
+ Explorer ein-/ausblenden (Strg+B)
+
+
+ Überlagerung oder Inline-Bereichsplatzierung ändern
+
+
+ Zurück
+
+
+ Suche abbrechen
+
+
+ Geheimnis
+
+
+ Geheimnis
+
+
+ Schlüssel
+
+
+ Schlüssel
+
+
+ Zertifikat
+
+
+ Zertifikat
+
+
+ Alle
+
+
+ Abonnements verwalten...
+
+
+ Kennwortgenerator..
+
+
+ Versions-ID kopieren
+
+
+ Azure RBAC-Dokumentation
+
+
+ Sie haben keine Schlüsseltresore ausgewählt.
+
+
+ Erweitern Sie die Navigationsleiste auf der linken Seite, um Abonnements anzuzeigen und Tresore zu erweitern
+
+
+ Keine Werte oder Schlüsseltresore sichtbar? Lassen Sie sich von Ihrem Administrator Berechtigungen erteilen
+
+
+ Fehler
+
+
+ Ok
+
+
+ Der Geheimniswert für „{0}" wurde erstellt
+
+
+ Der Wert von „{0}" wurde in die Zwischenablage kopiert.
+
+
+ Erfolg
+
+
+ Die Änderungen wurden gespeichert.
+
+
+ Abonnement-ID z. B. cd7a227e-4...
+
+
+ Ressourcengruppenname z. B. rg-my-resource-group
+
+
+ Key Vault-Name z. B. my-key-vault
+
+
+ Abbrechen
+
+
+ Absenden
+
+
+ Öffnen Sie einen Schlüsseltresor mit Ihren vorhandenen Anmeldeinformationen, wenn Sie keine expliziten Leserechte für ein Abonnement oder eine Ressourcengruppe haben.
+
+
+ Einstellungen
+
+
+ Externen Tresor öffnen
+
+
+ Fehler
+
+
+ Das Formular enthält einige Fehler.
+
+
+ Element über URL öffnen
+
+
+ Ein Geheimnis über die Geheimnis-Versions-URI in einem Tresor Ihres aktuellen Mandanten öffnen
+
+
+ Anwendungseinstellungen
+
+
+ Tresore anzeigen
+
+
+ Abbrechen
+
+
+ Erste Schritte..
+
+
+ Durchsuchen Sie Ihre Azure Key Vaults schnell
+
+
+ Azure Key Vault Explorer hilft Ihnen, Geheimnisse, Schlüssel und Zertifikate über Abonnements hinweg an einem Ort zu durchsuchen und zu organisieren.
+
+
+ Willkommen
+
+
+ Angeheftet
+
+
+ Abonnement
+
+
+ Name
+
+
+ Mandanten-ID
+
+
+ Status
+
+
+ Laden der aktuellen Strukturansicht-Elemente abbrechen
+
+
+ Externes Tresorelement öffnen
+
+
+ Öffnen Sie ein Element aus einem anderen Schlüsseltresor, wenn Sie keine expliziten Leserechte für ein Abonnement oder eine Ressourcengruppe haben.
+
+
+ Elementtyp auswählen
+
+
+ Name des Elements, z. B. „my-secret"
+
+
+ https:/IHR_TRESOR.vault.azure.net
+
+
+ Kennwortgenerator
+
+
+ Kennwortlänge
+
+
+ Zeichensätze einschließen
+
+
+ Kleinbuchstaben (a-z)
+
+
+ Großbuchstaben (A-Z)
+
+
+ Ziffern (0-9)
+
+
+ Sonderzeichen (!@#$%...)
+
+
+ Mit Kommas trennen (z. B. l,1,O,0)
+
+
+ Zeichen ausschließen
+
+
+ Mit Kommas trennen (z. B. l,1,O,0)
+
+
+ Generiertes Kennwort
+
+
+ Generieren
+
+
+ Bereichsposition ändern
+
+
+ Nach Updates suchen
+
+
+ Quellcode
+
+
+ Lizenz
+
+
+ Sprache
+
+
+ Azure-Cloudinstanz
+
+
+ Anzeigesprache auswählen
+
+
+ Wählen Sie die Azure-Cloudinstanz aus, mit der eine Verbindung hergestellt werden soll (z. B. Öffentlich, Government oder China).
+
+
+ App-Design
+
+
+ Anzuzeigendes App-Design auswählen
+
+
+ Systemeinstellung verwenden
+
+
+ Dunkel
+
+
+ Kontoinformationen
+
+
+ Kontodetails anzeigen und Aktionen ausführen
+
+
+ Einstellungen
+
+
+ In Tab öffnen
+
+
+ An Schnellzugriff anheften
+
+
+ Vom Schnellzugriff entfernen
+
+
+ Im Azure-Portal öffnen
+
+
+ Eigenschaften
+
+
+ Neu..
+
+
+ Geheimnis..
+
+
+ Öffnen
+
+
+ Aktualisieren
+
+
+ Kopieren
+
+
+ Bearbeiten
+
+
+ Bearbeiten
+
+
+ Neue Version
+
+
+ Neue Version
+
+
+ Öffentlichen Schlüssel herunterladen
+
+
+ CER herunterladen
+
+
+ PFX/PEM herunterladen
+
+
+ Neues Geheimnis
+
+
+ Kopiert
+
+
+ Für „{0}" wurde kein Wert gefunden
+
+
+ Unzureichende Berechtigungen für den Zugriff auf „{}"
+
+
+ Abbrechen
+
+
+ Elemente
+
+
+ Element
+
+
+ Name
+
+
+ Zuletzt geändert
+
+
+ Läuft ab
+
+
+ Tags
+
+
+ Tags
+
+
+ Aktualisiert
+
+
+ Inhaltstyp
+
+
+ Schnellzugriff
+
+
+ Version
+
+
+ Feedback senden
+
+
+ Abonnement-ID
+
+
+ Mandanten-ID
+
+
+ Status
+
+
+ Sie wurden abgemeldet.
+
+
+ Konto
+
+
+ Darstellung
+
+
+ Info
+
+
+ Erweiterte Kontoeinstellungen
+
+
+ Das Ändern dieser Einstellung meldet Sie ab und erfordert einen Neustart der Anwendung.
+
+
+ Hauptmenü
+
+
+ Verwenden Sie diese Schaltfläche, um den Navigationsbereich zu öffnen oder zu schließen, auf Einstellungen zuzugreifen und andere Tools oder Funktionen zu starten.
+
+
+ Fehler anzeigen
+
+
+ Geheimnis erstellen
+
+
+ Geheimnisname
+
+
+ Tresorspeicherort
+
+
+ Geheimniswert
+
+
+ Geheimnis-Inhaltstyp (optional)
+
+
+ Aktiviert
+
+
+ Ja
+
+
+ Nein
+
+
+ Wertsichtbarkeit umschalten
+
+
+ Zwischenablage
+
+
+ Die Anwendung wurde zurückgesetzt. Bitte beenden Sie die App.
+
+
+ Datenbank gelöscht. Starten Sie die App neu, um die Datenbank neu zu erstellen.
+
+
+ Ihre Änderungen wurden gespeichert.
+
+
+ Dokumentation: Leitfaden zur Mandanteneinrichtung
+
+
+ Tag entfernen
+
+
+ Tag hinzufügen
+
+
+ Schließen
+
+
+ Das Element konnte nicht abgerufen werden
+
+
+ Name:
+
+
+ Erstellt:
+
+
+ Aktualisiert:
+
+
+ Standort:
+
+
+ Bezeichner:
+
+
+ Aktivierung:
+
+
+ Ablauf:
+
+
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Strings/en/Resources.resw b/src/uno/AzureKeyVaultStudio/Strings/en/Resources.resw
similarity index 95%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Strings/en/Resources.resw
rename to src/uno/AzureKeyVaultStudio/Strings/en/Resources.resw
index d8af5ac2..0ae58b8c 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Strings/en/Resources.resw
+++ b/src/uno/AzureKeyVaultStudio/Strings/en/Resources.resw
@@ -279,12 +279,21 @@
Secret
+
+ Secret
+
Key
+
+ Key
+
Certificate
+
+ Certificate
+
All
@@ -531,9 +540,15 @@
Edit
+
+ Edit
+
New Version
+
+ New Version
+
Download Public Key
@@ -681,4 +696,28 @@
Close
+
+ The item could not be retrieved
+
+
+ Name:
+
+
+ Created:
+
+
+ Updated:
+
+
+ Location:
+
+
+ Identifier:
+
+
+ Activation:
+
+
+ Expiration:
+
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Strings/es/Resources.resw b/src/uno/AzureKeyVaultStudio/Strings/es/Resources.resw
similarity index 95%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Strings/es/Resources.resw
rename to src/uno/AzureKeyVaultStudio/Strings/es/Resources.resw
index fae95085..a7759838 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Strings/es/Resources.resw
+++ b/src/uno/AzureKeyVaultStudio/Strings/es/Resources.resw
@@ -279,12 +279,21 @@
Secreto
+
+ Secreto
+
Clave
+
+ Clave
+
Certificado
+
+ Certificado
+
Todos
@@ -531,9 +540,15 @@
Editar
+
+ Editar
+
Nueva versión
+
+ Nueva versión
+
Descargar clave pública
@@ -681,4 +696,28 @@
Cerrar
+
+ No se pudo recuperar el elemento
+
+
+ Nombre:
+
+
+ Creado:
+
+
+ Actualizado:
+
+
+ Ubicación:
+
+
+ Identificador:
+
+
+ Activación:
+
+
+ Expiración:
+
\ No newline at end of file
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Strings/fr/Resources.resw b/src/uno/AzureKeyVaultStudio/Strings/fr/Resources.resw
similarity index 95%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Strings/fr/Resources.resw
rename to src/uno/AzureKeyVaultStudio/Strings/fr/Resources.resw
index 188f09a2..52cf2eed 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Strings/fr/Resources.resw
+++ b/src/uno/AzureKeyVaultStudio/Strings/fr/Resources.resw
@@ -279,12 +279,21 @@
Secret
+
+ Secret
+
Clé
+
+ Clé
+
Certificat
+
+ Certificat
+
Tous
@@ -531,9 +540,15 @@
Modifier
+
+ Modifier
+
Nouvelle Version
+
+ Nouvelle Version
+
Télécharger la clé publique
@@ -681,4 +696,28 @@
Fermer
-
\ No newline at end of file
+
+ L’élément n’a pas pu être récupéré
+
+
+ Nom:
+
+
+ Créé:
+
+
+ Mis à jour:
+
+
+ Emplacement:
+
+
+ Identifiant:
+
+
+ Activation:
+
+
+ Expiration:
+
+
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Strings/pt-BR/Resources.resw b/src/uno/AzureKeyVaultStudio/Strings/pt-BR/Resources.resw
similarity index 95%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Strings/pt-BR/Resources.resw
rename to src/uno/AzureKeyVaultStudio/Strings/pt-BR/Resources.resw
index 1a7c1467..2b7bf838 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Strings/pt-BR/Resources.resw
+++ b/src/uno/AzureKeyVaultStudio/Strings/pt-BR/Resources.resw
@@ -279,12 +279,21 @@
Segredo
+
+ Segredo
+
Chave
+
+ Chave
+
Certificado
+
+ Certificado
+
Todos
@@ -531,9 +540,15 @@
Editar
+
+ Editar
+
Nova versão
+
+ Nova versão
+
Baixar chave pública
@@ -681,4 +696,28 @@
Fechar
+
+ Não foi possível recuperar o item
+
+
+ Nome:
+
+
+ Criado:
+
+
+ Atualizado:
+
+
+ Localização:
+
+
+ Identificador:
+
+
+ Ativação:
+
+
+ Expiração:
+
\ No newline at end of file
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ExternalVaultDialog.xaml b/src/uno/AzureKeyVaultStudio/UserControls/ExternalVaultDialog.xaml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ExternalVaultDialog.xaml
rename to src/uno/AzureKeyVaultStudio/UserControls/ExternalVaultDialog.xaml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ExternalVaultDialog.xaml.cs b/src/uno/AzureKeyVaultStudio/UserControls/ExternalVaultDialog.xaml.cs
similarity index 82%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ExternalVaultDialog.xaml.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/ExternalVaultDialog.xaml.cs
index 43b1f44a..4402cad9 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ExternalVaultDialog.xaml.cs
+++ b/src/uno/AzureKeyVaultStudio/UserControls/ExternalVaultDialog.xaml.cs
@@ -6,23 +6,23 @@ namespace AzureKeyVaultStudio.UserControls;
public sealed partial class ExternalVaultDialog : ContentDialog
{
- private readonly IStringLocalizer _localizer;
- public ExternalVaultDialogViewModel ViewModel => DataContext as ExternalVaultDialogViewModel;
+ private readonly IStringLocalizer? _localizer;
+ public ExternalVaultDialogViewModel? ViewModel => DataContext as ExternalVaultDialogViewModel;
public ExternalVaultDialog()
{
DataContext = new ExternalVaultDialogViewModel();
this.InitializeComponent();
- _localizer = (Application.Current as App).Host?.Services?.GetRequiredService();
+ _localizer = (Application.Current as App)?.Host?.Services?.GetRequiredService();
WeakReferenceMessenger.Default.Register(this, ViewModel.MessengerToken, async (r, m) =>
{
- ShowDialogMessage(_localizer["NewItemErrorTitle"], m.Data, _localizer["NewItemDismissButtonText"]);
+ ShowDialogMessage(_localizer?["NewItemErrorTitle"] ?? "Error", m.Data, _localizer?["NewItemDismissButtonText"] ?? "Ok");
});
}
private async void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
- ViewModel.ValidateCommand.Execute(null);
+ ViewModel?.ValidateCommand.Execute(null);
if (ViewModel.HasErrors)
{
args.Cancel = true;
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ExternalVaultItemDialog.xaml b/src/uno/AzureKeyVaultStudio/UserControls/ExternalVaultItemDialog.xaml
similarity index 87%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ExternalVaultItemDialog.xaml
rename to src/uno/AzureKeyVaultStudio/UserControls/ExternalVaultItemDialog.xaml
index 1a87126d..8fc82bce 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ExternalVaultItemDialog.xaml
+++ b/src/uno/AzureKeyVaultStudio/UserControls/ExternalVaultItemDialog.xaml
@@ -25,9 +25,14 @@
+ SelectedItem="{x:Bind ViewModel.SelectedItemType, Mode=TwoWay}">
+
+
+
+
+
+
DataContext as ExternalVaultItemDialogViewModel;
+ private readonly IStringLocalizer? _localizer;
+ public ExternalVaultItemDialogViewModel? ViewModel => DataContext as ExternalVaultItemDialogViewModel;
public ExternalVaultItemDialog()
{
DataContext = new ExternalVaultItemDialogViewModel();
this.InitializeComponent();
- _localizer = (Application.Current as App).Host?.Services?.GetRequiredService();
+ _localizer = (Application.Current as App)?.Host?.Services?.GetRequiredService();
WeakReferenceMessenger.Default.Register(this, ViewModel.MessengerToken, async (r, m) =>
{
- ShowDialogMessage(title: _localizer["NewItemErrorTitle"], m.Data, _localizer["NewItemDismissButtonText"]);
+ ShowDialogMessage(title: _localizer?["NewItemErrorTitle"] ?? "Error", m.Data, _localizer?["NewItemDismissButtonText"] ?? "Ok");
});
}
@@ -60,7 +60,4 @@ private void ShowDialogMessage(string title, string message, string dismissButto
});
}
- private void ContentDialog_SecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
- {
- }
}
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ItemDetails.xaml b/src/uno/AzureKeyVaultStudio/UserControls/ItemDetails.xaml
similarity index 97%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ItemDetails.xaml
rename to src/uno/AzureKeyVaultStudio/UserControls/ItemDetails.xaml
index 822160ea..9d191f94 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ItemDetails.xaml
+++ b/src/uno/AzureKeyVaultStudio/UserControls/ItemDetails.xaml
@@ -191,12 +191,12 @@
+ Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
+ Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
+ Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
+ Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
+ Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
+ Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
+ Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
DataContext as ItemPropertiesViewModel;
-
+ private IStringLocalizer? _stringLocalizer { get; set; }
public ItemDetails()
{
InitializeComponent();
+ _stringLocalizer = (Application.Current as App)?.Host?.Services.GetRequiredService();
+
}
private void VersionsDataGrid_Sorting(object sender, DataGridColumnEventArgs e)
@@ -100,14 +102,14 @@ private async void OnNewVersionClick(object sender, RoutedEventArgs e)
var dialog = new NewVersionDialog
{
- Title = "New Version",
+ Title = _stringLocalizer?["NewVersion"] ?? "New Version",
XamlRoot = XamlRoot,
MinHeight = 500,
IsPrimaryButtonEnabled = true,
- PrimaryButtonText = "Create",
+ PrimaryButtonText = _stringLocalizer?["SubmitButtonText"] ?? "Submit",
DefaultButton = ContentDialogButton.Primary,
PrimaryButtonCommand = vm.NewSecretVersionCommand,
- CloseButtonText = "Cancel",
+ CloseButtonText = _stringLocalizer?["CancelButtonText"] ?? "Cancel",
DataContext = vm,
RequestedTheme = this.ActualTheme
};
@@ -135,14 +137,17 @@ private async void OnEditVersionClick(object sender, RoutedEventArgs e)
IsEdit = true
};
+ var itemName = _stringLocalizer?["SecretName"] ?? "Secret";
+ var title = _stringLocalizer?["EditTitle"] ?? "Edit";
var dialog = new NewVersionDialog
{
- Title = "Edit " + (ViewModel.IsKey ? "Key" : ViewModel.IsSecret ? "Secret" : "Certificate"),
+ Title = $"{title} {itemName}",
IsPrimaryButtonEnabled = true,
- PrimaryButtonText = "Apply Changes",
+ PrimaryButtonText = _stringLocalizer?["SubmitButtonText"] ?? "Submit",
DefaultButton = ContentDialogButton.Primary,
PrimaryButtonCommand = vm.SaveSecretDetailsChangesCommand,
- CloseButtonText = "Cancel",
+ CloseButtonText = _stringLocalizer?["CancelButtonText"] ?? "Cancel",
+
XamlRoot = XamlRoot,
DataContext = vm,
RequestedTheme = this.ActualTheme
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/KeyVaultTree.xaml b/src/uno/AzureKeyVaultStudio/UserControls/KeyVaultTree.xaml
similarity index 97%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/KeyVaultTree.xaml
rename to src/uno/AzureKeyVaultStudio/UserControls/KeyVaultTree.xaml
index 8df70b6e..e6fd90fb 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/KeyVaultTree.xaml
+++ b/src/uno/AzureKeyVaultStudio/UserControls/KeyVaultTree.xaml
@@ -2,6 +2,7 @@
x:Class="AzureKeyVaultStudio.UserControls.KeyVaultTree"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:arm="using:Azure.ResourceManager.KeyVault"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:AzureKeyVaultStudio.UserControls"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -24,7 +25,7 @@
+ CommandParameter="{Binding}">
@@ -33,7 +34,7 @@
Name="PinToQuickAccess"
x:Uid="PinToQuickAccessMenuFlyoutItem"
Command="{x:Bind ViewModel.PinVaultToQuickAccessCommand}"
- CommandParameter="{Binding VaultResource}">
+ CommandParameter="{Binding}">
@@ -42,7 +43,7 @@
Name="UnpinFromQuickAccess"
x:Uid="UnPinToQuickAccessMenuFlyoutItem"
Command="{x:Bind ViewModel.RemovePinVaultToQuickAccessCommand}"
- CommandParameter="{Binding VaultResource}">
+ CommandParameter="{Binding}">
@@ -51,7 +52,7 @@
+ CommandParameter="{Binding}">
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/KeyVaultTree.xaml.cs b/src/uno/AzureKeyVaultStudio/UserControls/KeyVaultTree.xaml.cs
similarity index 86%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/KeyVaultTree.xaml.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/KeyVaultTree.xaml.cs
index a92f2b6c..b314f133 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/KeyVaultTree.xaml.cs
+++ b/src/uno/AzureKeyVaultStudio/UserControls/KeyVaultTree.xaml.cs
@@ -40,21 +40,21 @@ public KeyVaultTree()
private void OnDataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
{
- if (ViewModel?.RefreshCommand is not null)
+
+ if (ViewModel?.RefreshCommand is not null && ViewModel.HasFetchedData == false)
{
Bindings.Update();
- ViewModel.RefreshCommand.Execute(null);
+ DispatcherQueue.TryEnqueue(DispatcherQueuePriority.Low, () =>
+ {
+ if (ViewModel.RefreshCommand.IsRunning)
+ return;
+ ViewModel.RefreshCommand.Execute(null);
+ args.Handled = true;
+ });
+
}
}
- //private async void KeyVaultTreeView_Loaded(object sender, RoutedEventArgs e)
- //{
- // if (ViewModel?.RefreshCommand is not null)
- // {
- // ViewModel.RefreshCommand.ExecuteAsync(null);
- // }
- //}
-
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (DataContext is KeyVaultTreeViewModel viewModel && sender is TextBox model)
@@ -69,11 +69,9 @@ private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
private void TreeViewItem_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{
- if (sender is TreeViewItem treeViewItem
- && treeViewItem.DataContext is KvTreeNodeModel node
- && node.VaultResource is KeyVaultResource model)
+ if (sender is TreeViewItem treeViewItem && treeViewItem.DataContext is KvTreeNodeModel node)
{
- ViewModel?.OpenInNewTabCommand?.Execute(model);
+ ViewModel?.OpenInNewTabCommand?.Execute(node);
}
e.Handled = true;
}
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/NewItem.xaml b/src/uno/AzureKeyVaultStudio/UserControls/NewItem.xaml
similarity index 98%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/NewItem.xaml
rename to src/uno/AzureKeyVaultStudio/UserControls/NewItem.xaml
index e716efe8..b2a27198 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/NewItem.xaml
+++ b/src/uno/AzureKeyVaultStudio/UserControls/NewItem.xaml
@@ -36,6 +36,7 @@
@@ -107,9 +108,7 @@
+ IsOn="{x:Bind ViewModel.ItemPropertiesModel.Enabled, Mode=TwoWay}" />
@@ -184,7 +183,7 @@
Style="{ThemeResource DefaultButtonStyle}">
-
+
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/NewItem.xaml.cs b/src/uno/AzureKeyVaultStudio/UserControls/NewItem.xaml.cs
similarity index 97%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/NewItem.xaml.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/NewItem.xaml.cs
index 3d99af2a..08782cb3 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/NewItem.xaml.cs
+++ b/src/uno/AzureKeyVaultStudio/UserControls/NewItem.xaml.cs
@@ -8,7 +8,7 @@ namespace AzureKeyVaultStudio.UserControls;
public sealed partial class NewItem : UserControl
{
- public NewVersionViewModel ViewModel => DataContext as NewVersionViewModel;
+ public NewVersionViewModel? ViewModel => DataContext as NewVersionViewModel;
public Window? ParentWindow { get; set; }
private IStringLocalizer? _localizer { get; set; }
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/NewVersionDialog.xaml b/src/uno/AzureKeyVaultStudio/UserControls/NewVersionDialog.xaml
similarity index 78%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/NewVersionDialog.xaml
rename to src/uno/AzureKeyVaultStudio/UserControls/NewVersionDialog.xaml
index 693fbff1..f79d7696 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/NewVersionDialog.xaml
+++ b/src/uno/AzureKeyVaultStudio/UserControls/NewVersionDialog.xaml
@@ -24,9 +24,9 @@
Spacing="4"
Visibility="{x:Bind ViewModel.IsNew, Converter={StaticResource BoolToVisibilityConverter}}">
+ VerticalAlignment="Center" />
@@ -35,19 +35,19 @@
Spacing="4"
Visibility="{x:Bind ViewModel.IsNew, Converter={StaticResource BoolToVisibilityConverter}}">
+ VerticalAlignment="Center" />
+ x:Uid="SetActivationDateCheckbox"
+ IsChecked="{x:Bind ViewModel.HasActivationDateChecked, Mode=TwoWay}">
-
+
+ x:Uid="SetExpirationDateCheckbox"
+ IsChecked="{x:Bind ViewModel.HasExpirationDateChecked, Mode=TwoWay}">
-
+
-
+ VerticalAlignment="Center" />
+
-
+
@@ -98,16 +95,16 @@
Spacing="5"
Visibility="{x:Bind ViewModel.IsEdit, Converter={StaticResource BoolToVisibilityConverter}, ConverterParameter=True}">
+ VerticalAlignment="Center" />
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/NewVersionDialog.xaml.cs b/src/uno/AzureKeyVaultStudio/UserControls/NewVersionDialog.xaml.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/NewVersionDialog.xaml.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/NewVersionDialog.xaml.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/OverrideTitlebar.xaml b/src/uno/AzureKeyVaultStudio/UserControls/OverrideTitlebar.xaml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/OverrideTitlebar.xaml
rename to src/uno/AzureKeyVaultStudio/UserControls/OverrideTitlebar.xaml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/OverrideTitlebar.xaml.cs b/src/uno/AzureKeyVaultStudio/UserControls/OverrideTitlebar.xaml.cs
similarity index 81%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/OverrideTitlebar.xaml.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/OverrideTitlebar.xaml.cs
index a3a44d55..a1d2c4a8 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/OverrideTitlebar.xaml.cs
+++ b/src/uno/AzureKeyVaultStudio/UserControls/OverrideTitlebar.xaml.cs
@@ -1,4 +1,6 @@
using System.Diagnostics;
+using AzureKeyVaultStudio.Messages;
+using CommunityToolkit.Mvvm.Messaging;
using Microsoft.UI.Dispatching;
using Microsoft.UI.Windowing;
using Microsoft.UI.Xaml.Input;
@@ -37,45 +39,40 @@ public string SecondaryTitle
private AppWindow? _appWindow;
-
- //#if WINDOWS && !MACCATALYST && !HAS_UNO
- // public UIElement? TitleBarElement => DefaultTitleBar;
- //#endif
-
public OverrideTitlebar()
{
this.InitializeComponent();
_appWindow = (Application.Current as App)?.MainWindow?.AppWindow;
-
if (_appWindow is not null)
{
- //_appWindow.TitleBar.PreferredTheme = TitleBarTheme.UseDefaultAppMode;
if (!string.IsNullOrWhiteSpace(SecondaryTitle))
- _appWindow.Title = SecondaryTitle ;
-
+ _appWindow.Title = SecondaryTitle;
}
+
+ WeakReferenceMessenger.Default.Register(this, async (r, m) => await GoBack());
+ this.Unloaded += OnUnloaded;
}
- private async void BackButton_Click(object sender, RoutedEventArgs e)
+ private void OnUnloaded(object sender, RoutedEventArgs e)
{
- await GoBack();
+ WeakReferenceMessenger.Default.Unregister(this);
}
- private async void DefaultTitleBar_BackRequested(TitleBar sender, object args)
+ private async void BackButton_Click(object sender, RoutedEventArgs e)
{
await GoBack();
}
- private async void Page_PointerPressed(object sender, PointerRoutedEventArgs e)
+ private async void DefaultTitleBar_BackRequested(TitleBar sender, object args)
{
- if (e.GetCurrentPoint(sender as UIElement).Properties.IsXButton1Pressed)
- {
- await GoBack();
- }
+ await GoBack();
}
private async Task GoBack()
{
+ if (!this.IsLoaded || XamlRoot == null)
+ return;
+
var navigator = this.Navigator();
if (navigator == null)
return;
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/SharedWindow.xaml b/src/uno/AzureKeyVaultStudio/UserControls/SharedWindow.xaml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/SharedWindow.xaml
rename to src/uno/AzureKeyVaultStudio/UserControls/SharedWindow.xaml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/SharedWindow.xaml.cs b/src/uno/AzureKeyVaultStudio/UserControls/SharedWindow.xaml.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/SharedWindow.xaml.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/SharedWindow.xaml.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/StatusBarControl.xaml b/src/uno/AzureKeyVaultStudio/UserControls/StatusBarControl.xaml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/StatusBarControl.xaml
rename to src/uno/AzureKeyVaultStudio/UserControls/StatusBarControl.xaml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/StatusBarControl.xaml.cs b/src/uno/AzureKeyVaultStudio/UserControls/StatusBarControl.xaml.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/StatusBarControl.xaml.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/StatusBarControl.xaml.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/TagsEditor.xaml b/src/uno/AzureKeyVaultStudio/UserControls/TagsEditor.xaml
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/TagsEditor.xaml
rename to src/uno/AzureKeyVaultStudio/UserControls/TagsEditor.xaml
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/TagsEditor.xaml.cs b/src/uno/AzureKeyVaultStudio/UserControls/TagsEditor.xaml.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/TagsEditor.xaml.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/TagsEditor.xaml.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ToolPane.cs b/src/uno/AzureKeyVaultStudio/UserControls/ToolPane.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ToolPane.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/ToolPane.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ViewModels/ItemPropertiesViewModel.cs b/src/uno/AzureKeyVaultStudio/UserControls/ViewModels/ItemPropertiesViewModel.cs
similarity index 99%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ViewModels/ItemPropertiesViewModel.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/ViewModels/ItemPropertiesViewModel.cs
index d90e4589..3055f4e8 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ViewModels/ItemPropertiesViewModel.cs
+++ b/src/uno/AzureKeyVaultStudio/UserControls/ViewModels/ItemPropertiesViewModel.cs
@@ -271,7 +271,7 @@ public async Task GetPropertiesForKeyVaultValue(KeyVaultItemProperties model)
{
case KeyVaultItemType.Certificate:
var certificateProperties = await _vaultService.GetCertificateProperties(model.VaultUri, model.Name);
- var latestCert = Enumerable.MaxBy(certificateProperties, x => x.UpdatedOn)!;
+ var latestCert = Enumerable.MaxBy(certificateProperties, x => x.CreatedOn)!;
ItemPropertiesList = new ObservableCollection(KeyVaultItemProperties.FromCertificateProperties(certificateProperties));
IsEnabled = latestCert.Enabled ?? false;
IsCertificate = true;
@@ -280,7 +280,7 @@ public async Task GetPropertiesForKeyVaultValue(KeyVaultItemProperties model)
case KeyVaultItemType.Key:
var keyPropertiesList = await _vaultService.GetKeyProperties(model.VaultUri, model.Name);
- var latestKey = Enumerable.MaxBy(keyPropertiesList, x => x.UpdatedOn)!;
+ var latestKey = Enumerable.MaxBy(keyPropertiesList, x => x.CreatedOn)!;
IsManaged = latestKey.Managed;
IsEnabled = latestKey.Enabled ?? false;
ItemPropertiesList = new ObservableCollection(KeyVaultItemProperties.FromKeyProperties(keyPropertiesList));
@@ -290,7 +290,7 @@ public async Task GetPropertiesForKeyVaultValue(KeyVaultItemProperties model)
case KeyVaultItemType.Secret:
var secretPropertiesList = await _vaultService.GetSecretProperties(model.VaultUri, model.Name);
- var latestSecret = Enumerable.MaxBy(secretPropertiesList, x => x.UpdatedOn)!;
+ var latestSecret = Enumerable.MaxBy(secretPropertiesList, x => x.CreatedOn)!;
IsManaged = latestSecret.Managed;
IsEnabled = latestSecret.Enabled ?? false;
ItemPropertiesList = new ObservableCollection(KeyVaultItemProperties.FromSecretProperties(secretPropertiesList));
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ViewModels/KeyVaultTreeViewModel.cs b/src/uno/AzureKeyVaultStudio/UserControls/ViewModels/KeyVaultTreeViewModel.cs
similarity index 88%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ViewModels/KeyVaultTreeViewModel.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/ViewModels/KeyVaultTreeViewModel.cs
index af99007b..857aff65 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ViewModels/KeyVaultTreeViewModel.cs
+++ b/src/uno/AzureKeyVaultStudio/UserControls/ViewModels/KeyVaultTreeViewModel.cs
@@ -42,7 +42,7 @@ public KeyVaultTreeViewModel(AuthService authService, VaultService vaultService,
WeakReferenceMessenger.Default.Register(this, async (r, m) =>
{
- await PinVaultToQuickAccess(m.KeyVaultResource);
+ await PinToQuickAccessInternal(m.KeyVaultResource);
});
}
@@ -51,6 +51,9 @@ public KeyVaultTreeViewModel(AuthService authService, VaultService vaultService,
[ObservableProperty]
public partial bool IsBusy { get; set; } = false;
+ [ObservableProperty]
+ public partial bool HasFetchedData { get; set; } = false;
+
[ObservableProperty]
public partial string SearchQuery { get; set; } = string.Empty;
@@ -69,12 +72,22 @@ public KeyVaultTreeViewModel(AuthService authService, VaultService vaultService,
public void ExpandAll() => _ = Task.Run(() => _dispatcher.TryEnqueue(() => TreeDataSource.ForEach(item => item.IsExpanded = true)));
[RelayCommand(FlowExceptionsToTaskScheduler = true)]
- public async Task PinVaultToQuickAccess(KeyVaultResource model)
+ public async Task PinVaultToQuickAccess(KvTreeNodeModel item)
{
- if (model is null)
+ if (item is null)
return;
+ if (item.VaultResource is KeyVaultResource model)
+ {
+ bool flowControl = await PinToQuickAccessInternal(model);
+ if (!flowControl)
+ return;
+ }
+ }
+
+ private async Task PinToQuickAccessInternal(KeyVaultResource model)
+ {
var exists = await DbContext.QuickAccessItemByKeyVaultIdExists(model.Id);
- if (exists) return;
+ if (exists) return false;
var qa = new QuickAccess
{
KeyVaultId = model.Id,
@@ -88,16 +101,17 @@ public async Task PinVaultToQuickAccess(KeyVaultResource model)
_dispatcher.TryEnqueue(() =>
{
var items = new ObservableCollection(TreeDataSource[0].Children.OfType())
- {
+ {
new KvKeyVaultResourceModel
{
DisplayName = model.Data.Name,
Resource = model,
}
- };
+ };
TreeDataSource[0].Children.Clear();
TreeDataSource[0].Children.AddRange(items);
});
+ return true;
}
[RelayCommand(FlowExceptionsToTaskScheduler = true, IncludeCancelCommand = true, AllowConcurrentExecutions = false)]
@@ -111,25 +125,27 @@ private async Task Refresh(CancellationToken token)
}
[RelayCommand]
- private async Task RemovePinVaultToQuickAccess(KeyVaultResource model)
+ private async Task RemovePinVaultToQuickAccess(KvTreeNodeModel item)
{
- if (model is null)
+ if (item is null)
return;
+ if (item.VaultResource is KeyVaultResource model)
+ {
+ var exists = await DbContext.QuickAccessItemByKeyVaultIdExists(model.Id);
+ if (!exists) return;
- var exists = await DbContext.QuickAccessItemByKeyVaultIdExists(model.Id);
- if (!exists) return;
-
- await DbContext.DeleteQuickAccessItemByKeyVaultId(model.Id);
+ await DbContext.DeleteQuickAccessItemByKeyVaultId(model.Id);
- _dispatcher.TryEnqueue(() =>
- {
- var items = new ObservableCollection(
- TreeDataSource[0].Children
- .OfType()
- .Where(s => s.VaultResource?.Data.Id != model.Id));
- TreeDataSource[0].Children.Clear();
- TreeDataSource[0].Children.AddRange(items);
- });
+ _dispatcher.TryEnqueue(() =>
+ {
+ var items = new ObservableCollection(
+ TreeDataSource[0].Children
+ .OfType()
+ .Where(s => s.VaultResource?.Data.Id != model.Id));
+ TreeDataSource[0].Children.Clear();
+ TreeDataSource[0].Children.AddRange(items);
+ });
+ }
}
[RelayCommand]
@@ -199,6 +215,7 @@ private async Task InitializeTreeDataSource(CancellationToken token)
sub.Children.CollectionChanged += TreeViewSubNode_CollectionChanged;
}
}
+ HasFetchedData = true;
}
catch (Exception ex)
{
@@ -337,19 +354,25 @@ private Task ExecuteSearch(CancellationToken token)
}
[RelayCommand]
- private async Task OpenInAzure(KeyVaultResource model)
+ private async Task OpenInAzure(KvTreeNodeModel item)
{
- if (model is null) return;
- string tenantName = _authService.TenantName;
- string portalBaseUri = _authService.AzurePortalBaseUri;
- var uri = new Uri($"{portalBaseUri}/#@{tenantName}/resource{model.Id}");
- await Launcher.LaunchUriAsync(uri);
+ if (item is null) return;
+
+ if (item.VaultResource is KeyVaultResource model)
+ {
+ string tenantName = _authService.TenantName;
+ string portalBaseUri = _authService.AzurePortalBaseUri;
+ var uri = new Uri($"{portalBaseUri}/#@{tenantName}/resource{model.Id}");
+ await Launcher.LaunchUriAsync(uri);
+ }
}
[RelayCommand]
- private static void OpenInNewTab(KeyVaultResource model)
+ private static void OpenInNewTab(KvTreeNodeModel item)
{
- if (model is KeyVaultResource)
+ if (item is null) return;
+
+ if (item.VaultResource is KeyVaultResource model)
{
WeakReferenceMessenger.Default.Send(new AddDocumentMessage(model.Data));
}
@@ -399,7 +422,7 @@ internal void SetDispatcher(IDispatcher dispatcher)
_dispatcher = dispatcher;
}
- partial void OnTreeDataSourceChanging(ObservableCollection? oldValue, ObservableCollection? newValue)
+ partial void OnTreeDataSourceChanging(ObservableCollection oldValue, ObservableCollection newValue)
{
if (oldValue is null)
return;
@@ -418,7 +441,7 @@ partial void OnTreeDataSourceChanging(ObservableCollection?
}
}
- partial void OnTreeDataSourceChanged(ObservableCollection? value)
+ partial void OnTreeDataSourceChanged(ObservableCollection value)
{
if (value is null)
return;
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ViewModels/NewVersionViewModel.cs b/src/uno/AzureKeyVaultStudio/UserControls/ViewModels/NewVersionViewModel.cs
similarity index 93%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ViewModels/NewVersionViewModel.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/ViewModels/NewVersionViewModel.cs
index 9b08b1b0..f9bf1f4f 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ViewModels/NewVersionViewModel.cs
+++ b/src/uno/AzureKeyVaultStudio/UserControls/ViewModels/NewVersionViewModel.cs
@@ -2,6 +2,7 @@
using Azure.Security.KeyVault.Secrets;
using AzureKeyVaultStudio.Messages;
using AzureKeyVaultStudio.Services;
+using AzureKeyVaultStudio.Strings;
using CommunityToolkit.Mvvm.Messaging;
using CommunityToolkit.WinUI.Behaviors;
@@ -38,11 +39,11 @@ public partial class NewVersionViewModel : ObservableValidator
[ObservableProperty]
[NotifyDataErrorInfo]
[NotifyPropertyChangedFor(nameof(SecretNameError))]
- [Length(1, 127, ErrorMessage = "The field {0} must be between {1} and {2} characters long.")]
- [RegularExpression(@"^[a-zA-Z0-9\-]+$", ErrorMessage = "The field {0} is not a valid name")]
+ [Length(1, 127, ErrorMessageResourceType = typeof(Strings.Resources), ErrorMessageResourceName = "SecretNameErrorMessage")]
+ [RegularExpression(@"^[a-zA-Z0-9\-]+$", ErrorMessageResourceType = typeof(Strings.Resources), ErrorMessageResourceName = "SecretNameRegularExpressionErrorMessage")]
public partial string SecretName { get; set; } = "";
- [Required]
+ [Required(ErrorMessageResourceType = typeof(Strings.Resources), ErrorMessageResourceName = "SecretValueRequiredErrorMessage")]
[ObservableProperty]
[NotifyDataErrorInfo]
[NotifyPropertyChangedFor(nameof(SecretValueError))]
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ViewModels/StatusBarViewModel.cs b/src/uno/AzureKeyVaultStudio/UserControls/ViewModels/StatusBarViewModel.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/UserControls/ViewModels/StatusBarViewModel.cs
rename to src/uno/AzureKeyVaultStudio/UserControls/ViewModels/StatusBarViewModel.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Validations/SecretNameValidationAttribute.cs b/src/uno/AzureKeyVaultStudio/Validations/SecretNameValidationAttribute.cs
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/Validations/SecretNameValidationAttribute.cs
rename to src/uno/AzureKeyVaultStudio/Validations/SecretNameValidationAttribute.cs
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/app.manifest b/src/uno/AzureKeyVaultStudio/app.manifest
similarity index 100%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/app.manifest
rename to src/uno/AzureKeyVaultStudio/app.manifest
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/appsettings.development.json b/src/uno/AzureKeyVaultStudio/appsettings.development.json
similarity index 95%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/appsettings.development.json
rename to src/uno/AzureKeyVaultStudio/appsettings.development.json
index 337d3ae2..0f5b6179 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/appsettings.development.json
+++ b/src/uno/AzureKeyVaultStudio/appsettings.development.json
@@ -13,7 +13,8 @@
"en-US",
"es",
"fr",
- "pt-BR"
+ "pt-BR",
+ "de"
]
}
}
diff --git a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/appsettings.json b/src/uno/AzureKeyVaultStudio/appsettings.json
similarity index 95%
rename from src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/appsettings.json
rename to src/uno/AzureKeyVaultStudio/appsettings.json
index 9164497f..8656dab6 100644
--- a/src/uno/AzureKeyVaultStudio/AzureKeyVaultStudio/appsettings.json
+++ b/src/uno/AzureKeyVaultStudio/appsettings.json
@@ -13,7 +13,8 @@
"en-US",
"es",
"fr",
- "pt-BR"
+ "pt-BR",
+ "de"
]
}
}
diff --git a/src/uno/AzureKeyVaultStudio/global.json b/src/uno/AzureKeyVaultStudio/global.json
deleted file mode 100644
index 1abf1149..00000000
--- a/src/uno/AzureKeyVaultStudio/global.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- // To update the version of Uno please update the version of the Uno.Sdk here. See https://aka.platform.uno/upgrade-uno-packages for more information.
- "msbuild-sdks": {
- "Uno.Sdk": "6.6.0-dev.142"
- },
- "sdk": {
- "allowPrerelease": false
- }
-}
diff --git a/src/uno/AzureKeyVaultStudio/icon-iOS-Default-1024x1024@1x.png b/src/uno/AzureKeyVaultStudio/icon-iOS-Default-1024x1024@1x.png
deleted file mode 100644
index 9bc8f43f..00000000
Binary files a/src/uno/AzureKeyVaultStudio/icon-iOS-Default-1024x1024@1x.png and /dev/null differ
diff --git a/src/uno/AzureKeyVaultStudio/msbuild.ps1 b/src/uno/AzureKeyVaultStudio/msbuild.ps1
new file mode 100644
index 00000000..8073a84e
--- /dev/null
+++ b/src/uno/AzureKeyVaultStudio/msbuild.ps1
@@ -0,0 +1,16 @@
+
+param(
+ [string]$BuildNumber = '2.1.1.0'
+)
+
+msbuild .\AzureKeyVaultStudio.csproj /t:Restore,Build /r /p:TargetFramework='net10.0-windows10.0.26100' /p:Configuration=Release /p:Platform=x64 /p:GenerateAppxPackageOnBuild=true /p:AppxBundle=Never /p:UapAppxPackageBuildMode=StoreUpload /p:AppxManifestIdentityVersion=$BuildNumber /p:AppxPackageDir="C:\temp\output\$BuildNumber";
+
+return
+
+msbuild .\AzureKeyVaultStudio.csproj /t:Restore,Build /r /p:TargetFramework='net10.0-windows10.0.26100' /p:Configuration=Release /p:Platform=x86 /p:GenerateAppxPackageOnBuild=true /p:AppxBundle=Never /p:UapAppxPackageBuildMode=StoreUpload /p:AppxManifestIdentityVersion=$BuildNumber /p:AppxPackageDir="C:\temp\output\$BuildNumber";
+
+
+
+
+
+msbuild .\AzureKeyVaultStudio.csproj /t:Restore,Build /r /p:TargetFramework='net10.0-windows10.0.26100' /p:Configuration=Release /p:Platform=arm64 /p:GenerateAppxPackageOnBuild=true /p:AppxBundle=Never /p:UapAppxPackageBuildMode=StoreUpload /p:AppxManifestIdentityVersion=$BuildNumber /p:AppxPackageDir="C:\temp\output\$BuildNumber";
diff --git a/src/uno/Directory.Packages.props b/src/uno/Directory.Packages.props
index 2dcede3f..da250a68 100644
--- a/src/uno/Directory.Packages.props
+++ b/src/uno/Directory.Packages.props
@@ -8,18 +8,19 @@
+
-
+
-
-
+
+
-
+
-
-
+
+
@@ -31,13 +32,13 @@
-
+
+
-
-
+
\ No newline at end of file
diff --git a/src/uno/global.json b/src/uno/global.json
index d60c3f3a..3c7e973e 100644
--- a/src/uno/global.json
+++ b/src/uno/global.json
@@ -1,7 +1,7 @@
{
// To update the version of Uno please update the version of the Uno.Sdk here. See https://aka.platform.uno/upgrade-uno-packages for more information.
"msbuild-sdks": {
- "Uno.Sdk": "6.6.0-dev.180"
+ "Uno.Sdk": "6.6.0-dev.232"
},
"sdk": {
"allowPrerelease": false