extensions.md
November 10, 2022 ยท View on GitHub
RxJava extensions
Copy extensions in the project and use as shown below.
fun Fingerprinter.fingerprintObservable(
version: Fingerprinter.Version,
stabilityLevel: StabilityLevel = StabilityLevel.OPTIMAL,
hasher: Hasher = MurMur3x64x128Hasher()
) = Observable.create(ObservableOnSubscribe<String> { emitter ->
this.getFingerprint(version, stabilityLevel, hasher) { fingerprint->
emitter.onNext(fingerprint)
emitter.onComplete()
}
})
fun Fingerprinter.deviceIdObservable(version: Fingerprinter.Version) = Observable
.create(ObservableOnSubscribe<DeviceIdResult> { emitter ->
this.getDeviceId(version) { deviceIdResult ->
emitter.onNext(deviceIdResult)
emitter.onComplete()
}
})
Usage:
val fingerprinter = FingerprinterFactory.create(context)
fingerprinter
.fingerprintObservable(version = Fingerprinter.Version.V_5)
.subscribe { fingerprint ->
// Your code
}
fingerprinter
.deviceIdObservable(version = Fingerprinter.Version.V_5)
.subscribe { deviceIdResult ->
val deviceId = deviceIdResult.deviceId
// Your code
}
Kotlin coroutines extensions
suspend fun Fingerprinter.fingerprint(
version: Fingerprinter.Version,
stabilityLevel: StabilityLevel = StabilityLevel.OPTIMAL,
hasher: Hasher = MurMur3x64x128Hasher()
): String {
return suspendCancellableCoroutine { continuation ->
getFingerprint(version, stabilityLevel, hasher) { fingerprint->
continuation.resume(fingerprint)
}
}
}
suspend fun Fingerprinter.deviceId(version: Fingerprinter.Version): DeviceIdResult {
return suspendCancellableCoroutine { continuation ->
getDeviceId(version) { deviceIdResult ->
continuation.resume(deviceIdResult)
}
}
}
Usage:
val fingerprinter = FingerprinterFactory.create(context)
...
launch {
val fingerprint = fingerprinter.fingerprint(Fingerprinter.Version.V_5)
val deviceId = fingerprinter.deviceId(Fingerprinter.Version.V_5).deviceId
}