Skip to content

Commit 1dd6dbc

Browse files
committed
Pin specific Xamarin packages to work around a build issue. See dotnet/android-libraries#764 for more info. Added initial configuration types to support configuration system.
1 parent 7e17dad commit 1dd6dbc

File tree

2 files changed

+109
-11
lines changed

2 files changed

+109
-11
lines changed

Diff for: SanteDB.Client.Mobile/Configuration/MauiClientInitialConfigurationProvider.cs

+93
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,30 @@
1717
* User: trevor
1818
* Date: 2023-4-19
1919
*/
20+
using SanteDB.BI.Services.Impl;
21+
using SanteDB.BusinessRules.JavaScript;
22+
using SanteDB.Caching.Memory.Session;
23+
using SanteDB.Caching.Memory;
2024
using SanteDB.Client.Configuration;
2125
using SanteDB.Client.Configuration.Upstream;
26+
using SanteDB.Client.Disconnected.Services;
27+
using SanteDB.Client.OAuth;
28+
using SanteDB.Client.Tickles;
29+
using SanteDB.Client.Upstream.Management;
30+
using SanteDB.Client.Upstream.Repositories;
31+
using SanteDB.Client.Upstream.Security;
32+
using SanteDB.Client.Upstream;
33+
using SanteDB.Client.UserInterface.Impl;
2234
using SanteDB.Core;
35+
using SanteDB.Core.Applets.Services.Impl;
2336
using SanteDB.Core.Configuration;
37+
using SanteDB.Core.Data.Backup;
38+
using SanteDB.Core.Data;
39+
using SanteDB.Core.Security.Audit;
40+
using SanteDB.Core.Security.Privacy;
41+
using SanteDB.Core.Security;
42+
using SanteDB.Core.Services.Impl;
43+
using SanteDB.Security.Certs.BouncyCastle;
2444
using System;
2545
using System.Collections.Generic;
2646
using System.Linq;
@@ -36,6 +56,79 @@ public class MauiClientInitialConfigurationProvider : IInitialConfigurationProvi
3656

3757
public SanteDBConfiguration Provide(SanteDBHostType hostContextType, SanteDBConfiguration configuration)
3858
{
59+
var appServiceSection = configuration.GetSection<ApplicationServiceContextConfigurationSection>();
60+
var instanceName = appServiceSection.InstanceName;
61+
var localDataPath = AppDomain.CurrentDomain.GetData("DataDirectory")?.ToString();
62+
63+
if (null == localDataPath)
64+
{
65+
throw new ApplicationException("Application bug exists. DataDirectory was not set before configuration provider was called. Ensure the DataDirectory data variable in the app domain is set before the config provider is initialized.");
66+
}
67+
68+
appServiceSection.ServiceProviders.AddRange(new List<TypeReferenceConfiguration>() {
69+
new TypeReferenceConfiguration(typeof(AesSymmetricCrypographicProvider)),
70+
new TypeReferenceConfiguration(typeof(InMemoryTickleService)),
71+
new TypeReferenceConfiguration(typeof(DefaultNetworkInformationService)),
72+
new TypeReferenceConfiguration(typeof(SHA256PasswordHashingService)),
73+
new TypeReferenceConfiguration(typeof(DefaultPolicyDecisionService)),
74+
new TypeReferenceConfiguration(typeof(MemoryAdhocCacheService)),
75+
new TypeReferenceConfiguration(typeof(AppletLocalizationService)),
76+
new TypeReferenceConfiguration(typeof(AppletBusinessRulesDaemon)),
77+
new TypeReferenceConfiguration(typeof(DefaultUpstreamManagementService)),
78+
new TypeReferenceConfiguration(typeof(DefaultUpstreamIntegrationService)),
79+
new TypeReferenceConfiguration(typeof(DefaultUpstreamAvailabilityProvider)),
80+
new TypeReferenceConfiguration(typeof(MemoryCacheService)),
81+
new TypeReferenceConfiguration(typeof(DefaultThreadPoolService)),
82+
new TypeReferenceConfiguration(typeof(MauiInteractionProvider)),
83+
new TypeReferenceConfiguration(typeof(MemoryQueryPersistenceService)),
84+
new TypeReferenceConfiguration(typeof(FileSystemDispatcherQueueService)),
85+
new TypeReferenceConfiguration(typeof(SimplePatchService)),
86+
new TypeReferenceConfiguration(typeof(DefaultBackupManager)),
87+
new TypeReferenceConfiguration(typeof(AppletBiRepository)),
88+
new TypeReferenceConfiguration(typeof(OAuthClient)),
89+
new TypeReferenceConfiguration(typeof(MemorySessionManagerService)),
90+
new TypeReferenceConfiguration(typeof(UpstreamUpdateManagerService)), // AmiUpdateManager
91+
new TypeReferenceConfiguration(typeof(UpstreamIdentityProvider)),
92+
new TypeReferenceConfiguration(typeof(UpstreamApplicationIdentityProvider)),
93+
new TypeReferenceConfiguration(typeof(UpstreamSecurityChallengeProvider)), // AmiSecurityChallengeProvider
94+
new TypeReferenceConfiguration(typeof(UpstreamRoleProviderService)),
95+
new TypeReferenceConfiguration(typeof(UpstreamSecurityRepository)),
96+
new TypeReferenceConfiguration(typeof(UpstreamRepositoryFactory)),
97+
new TypeReferenceConfiguration(typeof(UpstreamPolicyInformationService)),
98+
new TypeReferenceConfiguration(typeof(DataPolicyFilterService)),
99+
new TypeReferenceConfiguration(typeof(MauiOperatingSystemInfoService)),
100+
new TypeReferenceConfiguration(typeof(AppletSubscriptionRepository)),
101+
new TypeReferenceConfiguration(typeof(InMemoryPivotProvider)),
102+
new TypeReferenceConfiguration(typeof(AuditDaemonService)),
103+
new TypeReferenceConfiguration(typeof(DefaultDataSigningService)),
104+
new TypeReferenceConfiguration(typeof(DefaultBarcodeProviderService)),
105+
new TypeReferenceConfiguration(typeof(FileSystemDispatcherQueueService)),
106+
new TypeReferenceConfiguration(typeof(BouncyCastleCertificateGenerator)),
107+
new TypeReferenceConfiguration(typeof(RepositoryEntitySource)),
108+
new TypeReferenceConfiguration(typeof(FileSystemCdssLibraryRepository)),
109+
new TypeReferenceConfiguration(typeof(MauiPlatformSecurityProvider)),
110+
});
111+
112+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("input.name", "simple"));
113+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("input.address", "text"));
114+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("optional.patient.address.city", "true"));
115+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("optional.patient.address.county", "true"));
116+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("optional.patient.address.state", "false"));
117+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("optional.patient.name.family", "false"));
118+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("optional.patient.address.given", "false"));
119+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("forbid.patient.address.state", "false"));
120+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("forbid.patient.address.county", "true"));
121+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("forbid.patient.address.city", "false"));
122+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("forbid.patient.address.precinct", "true"));
123+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("forbid.patient.name.prefix", "true"));
124+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("forbid.patient.name.suffix", "true"));
125+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("forbid.patient.name.family", "false"));
126+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("forbid.patient.name.given", "false"));
127+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("allow.patient.religion", "false"));
128+
appServiceSection.AppSettings.Add(new AppSettingKeyValuePair("allow.patient.ethnicity", "false"));
129+
appServiceSection.AppSettings = appServiceSection.AppSettings.OrderBy(o => o.Key).ToList();
130+
131+
39132
// Security configuration
40133
var wlan = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault(o => o.NetworkInterfaceType == NetworkInterfaceType.Ethernet || o.Description.StartsWith("wlan"));
41134
String macAddress = Guid.NewGuid().ToString();

Diff for: SanteDB.Client.Mobile/SanteDB.Client.Mobile.csproj

+16-11
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
<!--<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion>-->
3333

3434
<TrimMode>partial</TrimMode>
35+
36+
<AndroidXCollectionVersion>1.4.2</AndroidXCollectionVersion>
37+
<AndroidXLifecycleVersion>2.8.4</AndroidXLifecycleVersion>
3538
</PropertyGroup>
3639

3740
<ItemGroup>
@@ -71,22 +74,24 @@
7174
</ItemGroup>
7275

7376
<ItemGroup>
74-
<PackageReference Include="BarcodeScanner.Mobile.Maui" Version="7.0.0.1-pre" />
75-
<PackageReference Include="CommunityToolkit.Maui" Version="6.1.0" />
76-
<PackageReference Include="CommunityToolkit.Maui.Markup" Version="3.3.1" />
77-
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="7.0.19" />
78-
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
77+
<PackageReference Include="BarcodeScanner.Mobile.Maui" Version="8.0.40.1" />
78+
<PackageReference Include="CommunityToolkit.Maui" Version="9.0.3" />
79+
<PackageReference Include="CommunityToolkit.Maui.Markup" Version="4.1.0" />
80+
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="8.0.8" />
81+
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" />
7982
<PackageReference Include="Nito.AsyncEx.Context" Version="5.1.2" />
80-
<PackageReference Include="Microsoft.Maui.Controls" Version="$(MauiVersion)" />
81-
<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="$(MauiVersion)" />
83+
<PackageReference Include="Microsoft.Maui.Controls" Version="8.0.82" />
84+
<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="8.0.82" />
85+
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.8.4.1" />
86+
87+
8288
</ItemGroup>
8389

8490
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0-android'">
85-
<PackageReference Include="Xamarin.Google.MLKit.BarcodeScanning" Version="117.2.0.4" />
86-
<PackageReference Include="SQLitePCLRaw.provider.e_sqlite3mc" Version="2.1.8" Exclude="Build,Analyzers" />
91+
<PackageReference Include="Xamarin.AndroidX.Activity.Ktx" Version="1.9.1.1" />
92+
<PackageReference Include="Xamarin.Google.MLKit.BarcodeScanning" Version="117.2.0.7" />
93+
<PackageReference Include="SQLitePCLRaw.provider.e_sqlite3mc" Version="2.1.9" Exclude="Build,Analyzers" />
8794
<PackageReference Include="SQLiteSpellfix.lib.e_sqlite3mc.android" Version="2.2.1" Exclude="Build,Analyzers" />
88-
<PackageReference Include="Xamarin.AndroidX.Collection" Version="1.4.0.3" />
89-
<PackageReference Include="Xamarin.AndroidX.Collection.Ktx" Version="1.4.0.2" />
9095
</ItemGroup>
9196

9297
<ItemGroup>

0 commit comments

Comments
 (0)