From 4fc14bd759fe757ace3628a2704f1477204a0a0b Mon Sep 17 00:00:00 2001 From: Dante Tam Date: Mon, 10 May 2021 18:18:49 -0700 Subject: [PATCH] feat: implement setMinTimeBetweenSessionsMillis API (#75) * feat: implement setMinTimeBetweenSessionsMillis API * chore: Show demonstration of setMinTimeBetweenSessions * chore: update demo to show when value is updated * chore: update demo to show when value is updated * chore: update docsstring with default time param Co-authored-by: Kelson Warner --- .../AmplitudeReactNativeModule.java | 9 +++ example/ios/Podfile.lock | 4 +- example/src/App.tsx | 2 + .../src/SdkMethodSections/SessionsSection.tsx | 62 +++++++++++++++++++ example/src/SdkMethodSections/index.ts | 2 + ios/AmplitudeReactNative.m | 2 + ios/AmplitudeReactNative.swift | 9 +++ src/index.ts | 15 +++++ src/types.ts | 4 ++ 9 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 example/src/SdkMethodSections/SessionsSection.tsx diff --git a/android/src/main/java/com/amplitude/reactnative/AmplitudeReactNativeModule.java b/android/src/main/java/com/amplitude/reactnative/AmplitudeReactNativeModule.java index 7f0aaac..c3e6123 100644 --- a/android/src/main/java/com/amplitude/reactnative/AmplitudeReactNativeModule.java +++ b/android/src/main/java/com/amplitude/reactnative/AmplitudeReactNativeModule.java @@ -237,6 +237,15 @@ public void uploadEvents(String instanceName, Promise promise) { } } + @ReactMethod + public void setMinTimeBetweenSessionsMillis(String instanceName, double minTimeBetweenSessionsMillis, Promise promise) { + AmplitudeClient client = Amplitude.getInstance(instanceName); + synchronized (client) { + client.setMinTimeBetweenSessionsMillis((long) minTimeBetweenSessionsMillis); + promise.resolve(true); + } + } + private Revenue createRevenue(JSONObject properties) { Revenue revenue = new Revenue(); try { diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 75f8c42..cbd77f9 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,6 +1,6 @@ PODS: - Amplitude (8.2.0) - - amplitude-react-native (2.0.12): + - amplitude-react-native (2.2.0): - Amplitude (= 8.2.0) - React-Core - boost-for-react-native (1.63.0) @@ -355,7 +355,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Amplitude: 263118b9e691e73a1c864b05bb08a3aff3636d16 - amplitude-react-native: c09a45650c3dd8bdef5da277721b9cb7b54d391b + amplitude-react-native: 1f421982e95ccc59abe2c77c8f276e177b5af0c9 boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c DoubleConversion: cde416483dac037923206447da6e1454df403714 FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e diff --git a/example/src/App.tsx b/example/src/App.tsx index b4845ad..a0ab2a2 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -13,6 +13,7 @@ import { GroupIdentifySection, FlushEventsSection, RevenueSection, + SessionsSection, } from './SdkMethodSections'; export default function App() { @@ -30,6 +31,7 @@ export default function App() { + diff --git a/example/src/SdkMethodSections/SessionsSection.tsx b/example/src/SdkMethodSections/SessionsSection.tsx new file mode 100644 index 0000000..9588ff2 --- /dev/null +++ b/example/src/SdkMethodSections/SessionsSection.tsx @@ -0,0 +1,62 @@ +import * as React from 'react'; +import { View } from 'react-native'; +import { Input, Button } from 'react-native-elements'; +import { useAmplitude } from '../utils/amplitude'; + +import { SdkSectionLayout } from './SdkSectionLayout'; + +const DEFAULT_MIN_TIME_BETWEEN_MILLIS = 5 * 60 * 1000; + +export const SessionsSection = () => { + const [ + minTimeBetweenSessionsMillis, + setMinTimeBetweenSessionsMillis, + ] = React.useState(DEFAULT_MIN_TIME_BETWEEN_MILLIS); + + const [ + savedMinTimeBetweenSessionsMillis, + setSavedMinTimeBetweenSessionsMillis, + ] = React.useState(DEFAULT_MIN_TIME_BETWEEN_MILLIS); + + const amplitude = useAmplitude(); + + return ( + + + + + setMinTimeBetweenSessionsMillis(Number(text))} + value={`${minTimeBetweenSessionsMillis}`} + /> +