diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 0b3ca88..0f5549e 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -8,10 +8,13 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 name: Checkout - uses: borales/actions-yarn@v3.0.0 name: Validation with: cmd: install + + - name: Verify frozen assignment mapping + run: yarn test src/internal/__tests__/Mapper.test.ts --runInBand diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 88a59d2..9abfcbc 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -34,5 +34,8 @@ jobs: yarn yarn prepare + - name: Verify frozen assignment mapping + run: yarn test src/internal/__tests__/Mapper.test.ts --runInBand + - name: Publish to npm - run: npm publish \ No newline at end of file + run: npm publish diff --git a/android/build.gradle b/android/build.gradle index 24e9a75..6e4e8e3 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -80,7 +80,7 @@ def kotlin_version = getExtOrDefault("kotlinVersion") dependencies { implementation "com.facebook.react:react-android" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation "io.qonversion:sandwich:7.12.0" + implementation "io.qonversion:sandwich:7.13.0" } if (isNewArchitectureEnabled()) { diff --git a/qonversion-react-native-sdk.podspec b/qonversion-react-native-sdk.podspec index 2e463cf..995a421 100644 --- a/qonversion-react-native-sdk.podspec +++ b/qonversion-react-native-sdk.podspec @@ -16,6 +16,6 @@ Pod::Spec.new do |s| s.source_files = "ios/**/*.{h,m,mm,cpp,swift}" s.private_header_files = "ios/**/*.h" - s.dependency "QonversionSandwich", "7.12.0" + s.dependency "QonversionSandwich", "7.13.0" install_modules_dependencies(s) end diff --git a/src/dto/enums.ts b/src/dto/enums.ts index 7c43b93..4b5c6bf 100644 --- a/src/dto/enums.ts +++ b/src/dto/enums.ts @@ -299,6 +299,7 @@ export enum RemoteConfigurationAssignmentType { UNKNOWN = "unknown", AUTO = "auto", MANUAL = "manual", + FROZEN = "frozen", } export enum ScreenPresentationStyle { diff --git a/src/internal/Mapper.ts b/src/internal/Mapper.ts index 4c4d37b..b8d9ff1 100644 --- a/src/internal/Mapper.ts +++ b/src/internal/Mapper.ts @@ -1059,6 +1059,8 @@ class Mapper { return RemoteConfigurationAssignmentType.AUTO; case "manual": return RemoteConfigurationAssignmentType.MANUAL; + case "frozen": + return RemoteConfigurationAssignmentType.FROZEN; default: return RemoteConfigurationAssignmentType.UNKNOWN; } diff --git a/src/internal/__tests__/Mapper.test.ts b/src/internal/__tests__/Mapper.test.ts new file mode 100644 index 0000000..9f07352 --- /dev/null +++ b/src/internal/__tests__/Mapper.test.ts @@ -0,0 +1,13 @@ +import Mapper from '../Mapper'; +import { RemoteConfigurationAssignmentType } from '../../dto/enums'; + +describe('remote configuration assignment provenance', () => { + it('preserves frozen and keeps unknown values fail-safe', () => { + expect(Mapper.convertRemoteConfigurationAssignmentType('frozen')).toBe( + RemoteConfigurationAssignmentType.FROZEN + ); + expect(Mapper.convertRemoteConfigurationAssignmentType('future')).toBe( + RemoteConfigurationAssignmentType.UNKNOWN + ); + }); +});