From e7476f7c87687c94e4629716eb10dd8b53931d9c Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 22 May 2026 08:57:57 +0200 Subject: [PATCH 01/21] chore(*): maui sdk --- .github/workflows/publish-maui.yml | 34 ++ CONTRIBUTING.md | 5 +- README.md | 2 + commitlint.config.js | 4 +- examples/example-maui/App.xaml | 10 + examples/example-maui/App.xaml.cs | 10 + examples/example-maui/MainPage.xaml | 23 ++ examples/example-maui/MainPage.xaml.cs | 115 ++++++ examples/example-maui/MauiProgram.cs | 33 ++ examples/example-maui/README.md | 15 + examples/example-maui/example-maui.csproj | 16 + packages/sdk-maui/CHANGELOG.md | 5 + packages/sdk-maui/Platforms/Android/.gitkeep | 0 .../Platforms/Android/HooksAndroid.cs | 63 ++++ .../Platforms/Android/Screeb.Android.cs | 330 ++++++++++++++++++ packages/sdk-maui/Platforms/iOS/.gitkeep | 0 .../sdk-maui/Platforms/iOS/ApiDefinitions.cs | 121 +++++++ packages/sdk-maui/Platforms/iOS/HooksIOS.cs | 28 ++ packages/sdk-maui/Platforms/iOS/Screeb.iOS.cs | 324 +++++++++++++++++ .../sdk-maui/Platforms/iOS/StructsAndEnums.cs | 3 + packages/sdk-maui/README.md | 33 ++ packages/sdk-maui/Screeb.cs | 150 ++++++++ packages/sdk-maui/ScreebHooks.cs | 50 +++ packages/sdk-maui/ScreebInitOptions.cs | 7 + packages/sdk-maui/ScreebMaui.csproj | 49 +++ packages/sdk-maui/ScreebUtils.cs | 35 ++ packages/sdk-maui/native/ios/.gitkeep | 0 packages/sdk-maui/tests/ScreebUtilsTests.cs | 63 ++++ .../sdk-maui/tests/ScreebUtilsTests.csproj | 18 + 29 files changed, 1544 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/publish-maui.yml create mode 100644 examples/example-maui/App.xaml create mode 100644 examples/example-maui/App.xaml.cs create mode 100644 examples/example-maui/MainPage.xaml create mode 100644 examples/example-maui/MainPage.xaml.cs create mode 100644 examples/example-maui/MauiProgram.cs create mode 100644 examples/example-maui/README.md create mode 100644 examples/example-maui/example-maui.csproj create mode 100644 packages/sdk-maui/CHANGELOG.md create mode 100644 packages/sdk-maui/Platforms/Android/.gitkeep create mode 100644 packages/sdk-maui/Platforms/Android/HooksAndroid.cs create mode 100644 packages/sdk-maui/Platforms/Android/Screeb.Android.cs create mode 100644 packages/sdk-maui/Platforms/iOS/.gitkeep create mode 100644 packages/sdk-maui/Platforms/iOS/ApiDefinitions.cs create mode 100644 packages/sdk-maui/Platforms/iOS/HooksIOS.cs create mode 100644 packages/sdk-maui/Platforms/iOS/Screeb.iOS.cs create mode 100644 packages/sdk-maui/Platforms/iOS/StructsAndEnums.cs create mode 100644 packages/sdk-maui/README.md create mode 100644 packages/sdk-maui/Screeb.cs create mode 100644 packages/sdk-maui/ScreebHooks.cs create mode 100644 packages/sdk-maui/ScreebInitOptions.cs create mode 100644 packages/sdk-maui/ScreebMaui.csproj create mode 100644 packages/sdk-maui/ScreebUtils.cs create mode 100644 packages/sdk-maui/native/ios/.gitkeep create mode 100644 packages/sdk-maui/tests/ScreebUtilsTests.cs create mode 100644 packages/sdk-maui/tests/ScreebUtilsTests.csproj diff --git a/.github/workflows/publish-maui.yml b/.github/workflows/publish-maui.yml new file mode 100644 index 0000000..6ff2bbf --- /dev/null +++ b/.github/workflows/publish-maui.yml @@ -0,0 +1,34 @@ +name: Publish Screeb.Maui + +on: + push: + tags: + - 'sdk-maui/v*' + +jobs: + publish: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' + + - name: Install MAUI workloads + run: dotnet workload install android ios + + - name: Restore + run: dotnet restore packages/sdk-maui/ScreebMaui.csproj + + - name: Build Android + run: dotnet build packages/sdk-maui/ScreebMaui.csproj -f net8.0-android -c Release --no-restore + + - name: Build iOS + run: dotnet build packages/sdk-maui/ScreebMaui.csproj -f net8.0-ios -c Release --no-restore + + - name: Pack + run: dotnet pack packages/sdk-maui/ScreebMaui.csproj -c Release --no-build -o ./nupkg + + - name: Push to NuGet + run: dotnet nuget push ./nupkg/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9ea4ab3..26dc38f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -52,5 +52,8 @@ npx lerna version --scope=@screeb/sdk-browser # Flutter # 1. Bump version in packages/sdk-flutter/pubspec.yaml -# 2. git tag sdk-flutter/vX.Y.Z && git push --tags +git tag sdk-flutter/vX.Y.Z && git push --tags + +# MAUI (NuGet) +git tag sdk-maui/v0.1.0 && git push --tags ``` diff --git a/README.md b/README.md index 57f39a1..0b3c64d 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Public SDKs for [Screeb](https://screeb.app) — the Product Discovery platform. | Vue | [`@screeb/sdk-vue`](packages/sdk-vue) | [npm](https://www.npmjs.com/package/@screeb/sdk-vue) | [Install](https://developers.screeb.app/sdk-vue/install) | | Ionic | Uses `@screeb/sdk-angular` / `@screeb/sdk-react` / `@screeb/sdk-browser` | — | [Install](https://developers.screeb.app/sdk-js/sdk-ionic) | | React Native | [`@screeb/react-native`](packages/sdk-reactnative) | [npm](https://www.npmjs.com/package/@screeb/react-native) | [Install](https://developers.screeb.app/sdk-react-native/install) | +| .NET MAUI | [`Screeb.Maui`](packages/sdk-maui) | [NuGet](https://www.nuget.org/packages/Screeb.Maui) | [Install](https://developers.screeb.app/sdk-maui/install) | | Flutter | [`plugin_screeb`](packages/sdk-flutter) | [pub.dev](https://pub.dev/packages/plugin_screeb) | [Install](https://developers.screeb.app/sdk-flutter/install) | | iOS | Closed source ([`sdk-ios-public`](https://github.com/ScreebApp/sdk-ios-public) — SPM mirror) | [SPM](https://github.com/ScreebApp/sdk-ios-public) | [Install](https://developers.screeb.app/sdk-ios/install) | | Android | Closed source | [Maven](https://central.sonatype.com/artifact/app.screeb.sdk/survey) | [Install](https://developers.screeb.app/sdk-android/install) | @@ -29,6 +30,7 @@ Public SDKs for [Screeb](https://screeb.app) — the Product Discovery platform. | Ionic | Angular 16 + Capacitor | [`examples/example-ionic`](examples/example-ionic) | | Expo | React Native + Expo | [`examples/example-expo`](examples/example-expo) | | React Native | React Native CLI | [`examples/example-reactnative`](examples/example-reactnative) | +| .NET MAUI | .NET MAUI | [`examples/example-maui`](examples/example-maui) | | Flutter | Flutter | [`examples/example-flutter`](examples/example-flutter) | | Android | Android (Kotlin) | [`examples/example-android`](examples/example-android) | | iOS | iOS (Swift) | [`examples/example-ios`](examples/example-ios) | diff --git a/commitlint.config.js b/commitlint.config.js index 3742de1..464f831 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -13,7 +13,9 @@ module.exports = { "sdk-angular", "example-angular", "sdk-vue", - "example-vue" + "example-vue", + "sdk-maui", + "example-maui" ]], "scope-empty": [2, "never"], "scope-min-length": [2, "always", 1], diff --git a/examples/example-maui/App.xaml b/examples/example-maui/App.xaml new file mode 100644 index 0000000..54475ab --- /dev/null +++ b/examples/example-maui/App.xaml @@ -0,0 +1,10 @@ + + + + + #6200EE + + + diff --git a/examples/example-maui/App.xaml.cs b/examples/example-maui/App.xaml.cs new file mode 100644 index 0000000..2316923 --- /dev/null +++ b/examples/example-maui/App.xaml.cs @@ -0,0 +1,10 @@ +namespace ExampleMaui; + +public partial class App : Application +{ + public App() + { + InitializeComponent(); + MainPage = new NavigationPage(new MainPage()); + } +} diff --git a/examples/example-maui/MainPage.xaml b/examples/example-maui/MainPage.xaml new file mode 100644 index 0000000..7a1dd9b --- /dev/null +++ b/examples/example-maui/MainPage.xaml @@ -0,0 +1,23 @@ + + + + +