-
Notifications
You must be signed in to change notification settings - Fork 74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lp/inapp image preloading #501
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- moved it in different file
- created kotlin class for cache - converted legacy gif and image cache in kotlin - CtCaches holds all the caches for in-apps feature for CT - Minor refactoring
- as per legacy code
- changed Ct caches signature to not have concrete class ref
- passing logger is optional
- added code to save data in files, as a bytearray stream
- properly to lru cache
- exposed caches for disk and made 2 entries for image and gif
- moved to comp object
- func to fetch and cache image. - caching is handled internally.
- the inheritance is correctly used - also changed interface signature to non nullable
- we did not need val. - props are better immutable as not changed.
- added func to save byte array in response - we changed logic to get in byte[] data and then make bitmap out of it. - we will return both byte[] and bitmap so that we can cache data as well.
- we need the byte array for caching in the file. - we wil reuse code for bitmap download in app.
- it not also contains the byte array of data - this will help us in saving to cache
- fetch method for network - cached method for checking from cache - InAppImageProvider.kt is intented to use to fetch any image needed for inapps feature.
…into lp/in_app_caching
- utils class comp errors removed - java-kt default argument issue
- fetch image functionality - provides bitmap/byte data as needed - made method inline to get generic type
- added functionality to fetch and save gif in cache - the gif cache is configured similar to inapps image cache
- extracted code for api call
- added read timeout - added connection timeout
- we have reused bitmap download code which is used in Push templates
- checked in cached file has a valid bitmap.
- delete image and gif methods added
- In app image provider renamed
- used resource provider to fetch the image and gif and removed previous image cache code.
- fixed the cache directory names
- used to cache and also for deleting resources
- safe refactor to extract variables
- we need to handle null key as LRU cache will internally throw exception
- we used media provider for inapps module to fetch cached image and gif data
- there was compilation prob - fixed as i passed argument
- deleted legacy cache classes
- assigned bytes to bitmap response - we missed assigning to DownloadedBitmap class
- we correctly initialised the manager - we did not have config to get logger which was causing a crash pre commit.
- created hashing method which can be passed on to file cache, this is needed to cache url to unique key
- separated uuid/hash generation logic for url key in cache.
- added test to verify file cache
…droid-sdk into lp/inapp_image_preloading # Conflicts: # clevertap-core/src/main/java/com/clevertap/android/sdk/inapp/InAppController.java
CTLalit
requested review from
darshanclevertap,
piyush-kukadiya and
shivamsharma2710
November 7, 2023 06:53
shivamsharma2710
approved these changes
Nov 7, 2023
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
CTLalit
added a commit
that referenced
this pull request
Jan 15, 2024
* feat(inapp) - add onQueueEvent and onQueueChargedEvent methods to InAppController SDK-3384 * feat(inapp) - notify onQueueChargedEvent and onQueueEvent to InAppController SDK-3384 * feat(inapp) - update evaluateClientSide logic to return first non-suppressed in-app and let InAppController handle displaying in-app SDK-3384 * feat(inapp) - remove EvaluationManager dependency from AppLaunchListener and let InAppController handle display of client side in-apps on app launch event SDK-3384 * feat(inapp) - update evaluateOnAppLaunchedServerSide logic to return first non-suppressed in-app SDK-3384 * feat(inapp) - glue handleAppLaunchServerSideInApps logic SDK-3384 * task(SDK-3390): move inApp parsing from EvaluationManager to deserializer class * resolve conflicts * fix(SDK-3390): fix limitMatcher unit tests * task(SDK-3390): remove redundant data class 'InApps' from 'CtResponse' * feat(inapp) - add NetworkHeadersListener and EndpointId SDK-3385 * feat(inapp) - add copyFrom and isNotNullAndEmpty JSONObject extensions SDK-3385 * feat(inapp) - make listToJsonArray() public SDK-3384 * feat(inapp) - refactor insertHeader() to return JSONObject instead of String and add NetworkHeadersListener logic SDK-3384 * feat(inapp) - glue evaluated server side in-apps and suppressed in-apps with network request headers SDK-3385 * feat(inapp) - clear stale in-apps before touching in-app response key SDK-3385 * task(SDK-3390): move hardCoded strings to Constants * task(SDK-3390): move CtResponse to inapp package * task(SDK-3390): rename CtResponse class to InAppResponseAdapter * refactor(SDK-3390): refactor the InAppResponseAdapter as per the actual JSON format * feat(SDK-3390): implement toJsonObject() in LimitAdapter and TriggerAdapter * refactor(SDK-3390): remove BatchListener implementation from EvaluationManager * feat(inapp) - rename getListOfWhenLimits() to getListOfWhenLimitsAndOccurrenceLimits() SDK-3384 * feat(inapp) - add getListOfWhenLimits() to InAppResponseAdapter SDK-3385 * feat(inapp) - add matchWhenLimitsBeforeDisplay() to EvaluationManager SDK-3385 * feat(inapp) - check hasInAppFrequencyLimitsMaxedOut logic after removing in-app from queue and before display, remove old session based logic SDK-3385 * task(SDK-3390): add generic method to serialize inApp jsonArray to the custom list * Lp/inapp image preloading (#501) * Extracting gif cache - moved it in different file * fixup! Extracting gif cache * Rename .java to .kt * task(SDK-3362) Cache class - created kotlin class for cache - converted legacy gif and image cache in kotlin - CtCaches holds all the caches for in-apps feature for CT - Minor refactoring * task(SDK-3362) Fixed optimistic value - as per legacy code * task(SDK-3362) CtCaches signature - changed Ct caches signature to not have concrete class ref * task(SDK-3362) Optional logger - passing logger is optional * task(SDK-3362) Fixed cache methods signature * task(SDK-3362) File cache - added code to save data in files, as a bytearray stream * task(SDK-3362) Renamed cache - properly to lru cache * task(SDK-3362) Exposed disk caches - exposed caches for disk and made 2 entries for image and gif * task(SDK-3362) instance() method - moved to comp object * task(SDK-3362) logger instance passing * task(SDK-3362) InAppImageProvider.kt - func to fetch and cache image. - caching is handled internally. * task(SDK-3362) Kotliny formatting * task(SDK-3362) formatting * task(SDK-3362) fixed inheritance - the inheritance is correctly used - also changed interface signature to non nullable * task(SDK-3362) data class signature - we did not need val. - props are better immutable as not changed. * task(SDK-3362) save byte array - added func to save byte array in response - we changed logic to get in byte[] data and then make bitmap out of it. - we will return both byte[] and bitmap so that we can cache data as well. * task(SDK-3362) formatting * task(SDK-3362) static usage * task(SDK-3362) saved byte array along with bitmap - we need the byte array for caching in the file. - we wil reuse code for bitmap download in app. * task(SDK-3362) Downloaded bitmap resp - it not also contains the byte array of data - this will help us in saving to cache * task(SDK-3362) added method for cached image - fetch method for network - cached method for checking from cache - InAppImageProvider.kt is intented to use to fetch any image needed for inapps feature. * task(SDK-3362) compilation errors - utils class comp errors removed - java-kt default argument issue * task(SDK-3362) image provider - fetch image functionality - provides bitmap/byte data as needed - made method inline to get generic type * task(SDK-3362) internal class * task(SDK-3362) gif functionality - added functionality to fetch and save gif in cache - the gif cache is configured similar to inapps image cache * task(SDK-3362) Image fetch code extracted - extracted code for api call * task(SDK-3362) Cache image preloader class - exposed method to take list of urls as args - we cannot enforce priority, we will need to support those changes * task(SDK-3362) Dispatchers to be injected * task(SDK-3362) Passed dispatcher deps - passed dispatcher provider as dependency * task(SDK-3362) methods private * task(SDK-3362) Http url connection params - added read timeout - added connection timeout * task(SDK-3362) Reused code for bitmap download - we have reused bitmap download code which is used in Push templates * task(SDK-3362) Valid image - checked in cached file has a valid bitmap. * task(SDK-3362) Delete methods - delete image and gif methods added * task(SDK-3362) Delete methods - In app image provider renamed * task(SDK-3362) Used resource provider - used resource provider to fetch the image and gif and removed previous image cache code. * task(SDK-3362) Directory names fixed - fixed the cache directory names * task(SDK-3362) resource provider - used to cache and also for deleting resources * task(SDK-3362) extract variable - safe refactor to extract variables * task(SDK-3362) cache key safety - we need to handle null key as LRU cache will internally throw exception * task(SDK-3362) used image from media provider - we used media provider for inapps module to fetch cached image and gif data * task(SDK-3362) Image preloader compile - there was compilation prob - fixed as i passed argument * task(SDK-3362) Deleted legacy caches - deleted legacy cache classes * task(SDK-3362) Bitmap bytes - assigned bytes to bitmap response - we missed assigning to DownloadedBitmap class * task(SDK-3362) resource manager init - we correctly initialised the manager - we did not have config to get logger which was causing a crash pre commit. * task(SDK-3362) hashing for file name - created hashing method which can be passed on to file cache, this is needed to cache url to unique key * task(SDK-3362) Removed unused method * task(SDK-3362) Optimised method * task(SDK-3362) Hashcode extraction - separated uuid/hash generation logic for url key in cache. * task(SDK-3362) File cache test - added test to verify file cache * feat(inapp) - change preference path on change user for InAppStore and ImpressionStore SDK-3385 * feat(inapp) - record impressions when in-app displayed to user SDK-3385 * Image prefetch - image prefetched once we get response * feat(inapp) - Handle Greater than, less than, and between operators when value is number in string form SDK-3385 * feat(inapp) - add encryption/decryption for in-apps, migrate inapp_notifs to device id based preference, create stores after device id is generated SDK-3385 * fix(inapp): add safe parsing on fetchType while processing onBatchSent trigger * fix(inapp): refactor code to check the Fetch type on the eventData instead of doing on batchItem * feat(inapp) - fix caching of encrypted in-apps SDK-3385 * fix(inapp): upgrade SDK version to v6.0.0 to match with the BE requirement * feat(inapp) - remove isTextEncrypted check for in-apps as it's logic is conflicting with json array brackets SDK-3418 * Fix(inapp) - fix bug where InAppFCManager was not updating limits due to sendTest flag set as true by AnalyticsManager SDK-3418 * feat(SDK-3390): rollback to manual inApp parsing * refactor(SDK-3390): add let scope on while accessing inAppStore from storeRegistry * Lp/image prefetch (#503) * Test cases for cache files - we added tests for lru cache - it had to be backed by interface to allow testing. * Fixed file cache tests - ignore io tests, aosp is responsible for testing it * CTCaches test - we had to change some things in ct caches file so that we can clear instance - ct caches test for size * InAppResourceProvider.kt made testable - got rid of context - method to provide cache externally so it can be mocked * InAppResourceProvider.kt testing - we added test cases for resource provider class - certain things were changed to make it testable * Renamed method - isCached -> isImageCached * Gif cache test case - memory cache data existence - file cache - contains func * Test cases for fetch image from resource provider: - added test for cached case - added test for remote fetch case - extracted out the api service and contract so it can be testable * Test cases for fetch gif from resource provider: - added test for cached case - added test for remote fetch case - extracted out the api service and contract so it can be testable * Fix(inapp) - fix bug where preference name for triggers when created, was having null device id SDK-3418 * Fix(inapp) - fix bug where maxPerSession was not initialized to -1 when it's parent JSON is empty, leading to hasSessionCapacityMaxedOut to be true instead of false SDK-3418 * Fix(inapp) - fix bug where same in-app was shown 2 times due to removed return statement from prepareForDisplay SDK-3418 * Fix(inapp) - fix bug where in-app was not displayed after adding to in-app queue and before display, even though limits were matching SDK-3418 * Fix(inapp) - fix bug where non suppressed in-app was not displayed SDK-3418 * Fix(inapp) - fix JSONException when evaluateClientSide in-apps SDK-3418 * Fix(inapp) - fix bug where inAppStore was null when accessed in EvaluationManager, due to eager initialisation SDK-3418 * Fix(inapp) - initialise impressionManager instance in InAppFCManager SDK-3418 * Fix(inapp) - fix JSONException on return value while calling evaluateOnAppLaunchedServerSide * Refactor(inapp) - Change type of inapps_eval parameter from List<String> to List<Long> * Refactor(inapp): Replace the usage of ssInApps with inAppMetaData in the evaluateServerSide * Chore(inapp): update the list of TODOs * Fix(inapp) - change json key for trigger condition from value to propertyValue SDK-3418 * Fix(inapp) - fix extraction of charged event props and items from JSON SDK-3418 * Fix(inapp) - refactor matchEvent method to accept EventAdapter directly, instead of event name and props SDK-3418 * Fix(inapp) - refactor getItemValue method to return list of TriggerValue and evaluate charged items one at a time SDK-3418 * Fix(inapp) - handle listValue for expected argument for less than and greater than operators SDK-3418 * Fix(inapp) - covert value to list if value is of type JSONArray SDK-3418 * chore(inapp) - add header event to sample app to push header event to CT SDK-3418 * feat(inapp) - add APIs for getting string value and list of string values after trimming and converting strings to lowercase SDK-3425 * feat(inapp) - add test cases for string sanitization in TriggerValueTest SDK-3425 * feat(inapp) - fix failing tests for EventAdapterTest SDK-3418 * feat(inapp) - add string sanitization to contains and equals operator before actual comparison SDK-3425 * feat(inapp) - refactor failing tests for TriggersMatcher SDK-3425 * feat(inapp) - add geoRadius parsing in TriggersAdapter SDK-3426 * feat(inapp) - add geoRadiusCount() and geoRadiusAtIndex(index) to TriggerAdapter SDK-3426 * feat(inapp) - repair tests for LimitsMatcher, broken during refactoring SDK-3429 * feat(inapp) - add tests for, Strings "006" and 6 are valid numbers SDK-3429 * fix(inapp) - add number check in actualIsInRangeOfExpected() SDK-3418 * fix(inapp) - allow comparison of number in string form and a number between expected list and actual value SDK-3418 * Feat(SDK-3426) - Add evaluateDistance method for comparing distances that calculates the haversine distance between two locations and checks if it's within a specified radius * Doc(SDK-3426): write javadoc for evaluateDistance method * Feat(SDK-3426): Implement matchGeoRadius method for comparing expected radius with the actual location * Feat(SDK-3426): provide coreMetaData to the InAppResponse class to retrieve and pass userLocation for SSAppLaunched evaluation * Feat(SDK-3426): Add try catch handling for matchGeoRadius * Doc(SDK-3426): Add javadoc for new APIs * Lp/image preloading executors (#505) * Prefetch using executors - we had added code to prefetch using coroutines - executors support for same task is added - made method to return resource executor - need to handle null config as there is tight coupling - added method in IO executor to have callback on same thread. * Method overload + dependency - redendant dependency is removed - method overload to hide detail about return type * CtExecutors without config dependency - we needed to pass config just to have logger in it - logger static methods can be used if logging is not required on acc level - created methods to support the same * Method overload for resurce download executor - thread pool size defaults to 8 * Strategy pattern used - Instead of having same file with 2 methods we used strategy pattern. - Refactored into different files * Async -> Limited parallelism - used limited parallelism instead of using async - this will give desired functionality to limit no of threads * Impl -> Strategy - ref correction * Method invocation - called overloaded method. * Preload handling - preloading using coroutine executors - parsed inapp media to get urls - removed inapp dismiss code, we have to figure correct place * Handled cache parsing failure - we fallback to api - this case is unlikely but added as fail safe * fix(inapp) - fix empty json handling for limits and refactor tests SDK-3418 * fix(inapp) - fix json array exception SDK-3418 * feat(inapp) - add unit tests for isInvalidIndex JSONArray extension SDK-3446 * feat(inapp) - add unit tests for hasData, SharedPreferences extension SDK-3446 * feat(inapp) - add unit tests for orEmptyArray, JSONArray extension SDK-3446 * feat(inapp) - change toList(), JSONArray extension logic to return list of T SDK-3446 * feat(inapp) - add unit tests for toList, JSONArray extension SDK-3446 * feat(inapp) - change iterator(), JSONArray extension logic to iterate array of T SDK-3446 * feat(inapp) - add unit tests for iterator, JSONArray extension SDK-3446 * fix(inapp) - fix safeGetJSONArray, JSONObject extension when value mapped by key is not a jsonArray SDK-3446 * feat(inapp) - add unit tests for safeGetJSONArray, JSONObject extension SDK-3446 * feat(inapp) - add unit tests for copyFrom, JSONObject extension SDK-3446 * feat(inapp) - add unit tests for isNotNullAndEmpty, JSONObject extension SDK-3446 * feat(inapp) - add unit tests for concatIfNotNull, String extension SDK-3446 * feat(inapp) - add unit tests for isValid, Location extension SDK-3446 * feat(inapp) - add unit tests for enqueue() in InAppQueue SDK-3447 * feat(inapp) - add unit tests for enqueueAll() in InAppQueue SDK-3447 * feat(inapp) - add unit tests for dequeue() in InAppQueue SDK-3447 * feat(inapp) - add unit tests for getQueueLength() in InAppQueue SDK-3447 * feat(inapp) - add unit tests for Clock interface SDK-3449 * feat(inapp) - add unit tests for isChargedEvent() in EventAdapterTest SDK-3450 * Added method to evict items from cache - when evaluation is done we evict inapps from cache (not useful inapps) - we might have to iterate all entries to check for stale image * feat(inapp) - add unit tests for TriggerManagerTest-3460 * Logging in resorce provider - added logging on cache eviction * feat(inapp): Replace mocked SharedPreferences with an actual instance in TriggerManager unit tests SDK-3460 * Revert "Logging in resorce provider" This reverts commit b0c6cc4. * Logging in resource provider - added logging so we can verify cache eviction * feat(inapp) - change private functions of EvaluationManager to internal for unit testing SDK-3454 * feat(inapp) - add unit tests for evaluate() in EvaluationManagerTest SDK-3454 * Feat: Container data class property - added property for all image asset urls - refactored to remove dup code * Feat: Cleanup code for cache eviction - created strategy pattern interface for methods - impl using coroutine and executors * Feat: Code refactor for image preload - success lamba added - this can be passed around to invoke code after success * Feat: Store for inapps assets - urls which are saved as set of strings - we save url once image is loaded successfully * Feat: InApp repo - repo contains preload and cleanup code for cache management - repo is integrated in inapp response to handle preloading - cleanup is also handled in prev point * feat(inapp) - refactor updateTTL to inject new Clock argument to make it unit testable SDK-3454 * feat(inapp) - add unit tests for updateTTL() in EvaluationManagerTest SDK-3454 * feat(inapp) - refactor generateWzrkId() in EvaluationManager, to inject new Clock argument to make it unit testable SDK-3454 * feat(inapp) - add unit tests for suppress() in EvaluationManagerTest SDK-3454 * feat(inapp) - add unit tests for generateWzrkId() in EvaluationManagerTest SDK-3454 * feat(inapp) - add a check to getWhenTriggers() if triggers are not JSONObject SDK-3454 * feat(inapp) - add unit tests for getWhenTriggers() in EvaluationManagerTest SDK-3454 * feat(inapp) - add unit tests for evaluateClientSide() in EvaluationManagerTest SDK-3454 * feat(inapp) - add unit tests for evaluateServerSide() in EvaluationManagerTest SDK-3454 * feat(inapp) - add unit tests for onAttachHeaders() in EvaluationManagerTest SDK-3454 * feat(inapp) - add unit tests for onSentHeaders() in EvaluationManagerTest SDK-3454 * feat(inapp) - add unit tests for evaluateOnEvent() in EvaluationManagerTest SDK-3454 * feat(inapp) - add unit tests for evaluateOnChargedEvent() in EvaluationManagerTest SDK-3454 * feat(inapp) - add unit tests for evaluateOnAppLaunchedClientSide() in EvaluationManagerTest SDK-3454 * feat(inapp) - add unit tests for evaluateOnAppLaunchedServerSide() in EvaluationManagerTest SDK-3454 * feat(inapp) - add unit tests for matchWhenLimitsBeforeDisplay() in EvaluationManagerTest SDK-3454 * feat(inapp) - change private function, sharedPrefs() of CTPreference to internal for unit testing SDK-3448 * feat(inapp) - add unit tests for CTPreference SDK-3448 * feat(inapp) - handle NumberFormatException when delimiter in string is not comma for getLongListFromPrefs() SDK-3451 * feat(inapp) - add unit tests for ImpressionStore SDK-3451 * feat(inapp) - add unit tests for InAppStore SDK-3453 * feat(inapp) - add unit tests for LegacyInAppStore SDK-3452 * fix(inapp) - fix less than greater than operators logic SDK-3505 * fix(inapp) - fix NPE while parsing media URLs for image preloading * feat(inapp) - support notification event properties for in-app evaluation SDK-3471 * feat(inapp) - support system properties for in-app evaluation SDK-3468 * feat(inapp) - fix on app launch, in-app not displayed when device is offline MC-1223 * feat(inapp) - fix mdc session limit SDK-3469 * feat(inapp) - support App Launched properties SDK-3470 * Feat(inapps): chaining -> composition, removal of chaining (#508) * Feat: chaining -> composition, removal of chaining - composed all objects for response into a list - do not need to chain and pass around multiple refs - code is simplified and easier to pass on data - used safe IDE refactor to accomplish * Feat: Full response info - full response is returning when event is app launch, wzrk fetch - added flag to response to check if it is full response - eviction is checked only in case of full response - eviction ignored for partial responses * Cleanup: imports optimised * Lp/image preload eviction 3 (#511) * Test: Preloader coroutine - added dependency for coroutines-test to accomplish this * Feat: Sliding expiry - image clean up logic is ran only at wzrk fetch - clean up logic changed to have KV in shared pref file - we evict after 14 days sliding expiry * Chore: Logging - network response logging * Chore: Private members - InAppResourceProvider members are made private * Chore: Private members * Chore: Proper logging for cached image return * Test: Assert success block invocations - we asserted success block is called appropriately * Test: InApp Repo test - tested fetch all images function * Test: used relaxed mock - we needed to test interractions for mock * Test: Cleanup for assets repo - tested with expired url - tested for url not coming in response * Test: Cleanup strategy coroutine test - tested cleanup method * Test: Cleanup strategy executor test - Changed mock executor and ct executor to work without config - it is required only for logging * Test: Prefetch executor test - tested executor code for prefetch strategy * feat(inapp): add matcher support for boolean type event-properties * feat(inapp): add unit tests for expectedValueEqualsActual for boolean type * [SDK-3456] Unit tests for TriggerAdapter (#517) * fix(inapp): rename json key for trigger condition from 'value' to 'propertyValue' * refactor(inapp): replace hardcoded values with constant names in unit tests * fix(inapp): update key name from 'operatorKey' to 'operator' to resolve the failing testOptTriggerOperator method * feat(inapp): add unit tests for unit tests for geoRadiusAtIndex(), geoRadiusCount * feat(inapp): add unit tests for unit tests for geoRadiusArray * feat(inapp) - include geoRadius property to the toJsonObject utility * refactor(inapp) - move hardcoded key names to constants and use in test methods * [SDK-3455] Unit tests for StoreProvider (#516) * feat(inapp): add unit tests for provideInAppStore, provideImpressionStore and provideLegacyInAppStore * feat(inapp): add unit tests for constructStorePreferenceName method * [SDK-3457] Unit tests for TriggerMatcher (#515) * fix(inapp): Corrected charged event name from 'ChargedEvent' to 'Charged' * fix(inapp): swap the actual and expected numbers for less than and greater than test cases * feat(inapp): add unit tests for match() with geoRadius trigger conditions * [SDK-3459] Unit tests for ImpressionManager (#513) * feat(inapp) - add unit tests for recordImpression(), perSession() and perSessionTotal() in EvaluationManagerTest SDK-3459 * feat(inapp) - add unit tests for perSecond() in EvaluationManagerTest SDK-3459 * feat(inapp) - add unit tests for perMinute() in EvaluationManagerTest SDK-3459 * feat(inapp) - add unit tests for testPerHour() in EvaluationManagerTest SDK-3459 * feat(inapp) - refactor unit tests coverage for perSecond() and perMinute() * feat(inapp) - add unit tests for testPerDay() method * feat(inapp) - add unit tests for perWeek() method * feat(inapp) - add unit tests for perSessionTotal() method * feat(inapp) - reformat code * feat(inapp) - make getImpressionCount methods private * feat(inapp) - add javaDoc details to the perWeek() method * feat(SDK-3542): create an empty assets folder * feat(SDK-3542): include image_interstitial.html file to the assets * feat(SDK-3542): format the html file * feat(inapp) - Persist evaluated in-app ids and suppressed in-apps across sessions SDK-3546 * feat(SDK-3542): implement image-interstitial preview logic * fix(SDK-3542): Resolve implicit type-casting issue with evalIds storage Changed storage from string to set<Sting> to address type-casting issues when dealing with a list of Longs. * fix(SDK-3542): resolved evalIds and suppressedIds loading failure due to null inAppStore Issue has been fixed by ensuring the loadSuppressedCSAndEvaluatedSSInAppsIds method is only invoked once the inAppStore is loaded to prevent the reported issue. * fix(SDK-3542): fix unit tests * fix(inapp) - rename file name Cache<T> to Cache as causing build error in windows OS. * fix(inapp) - remove Set data type for evaluated ss inapps SDK-3546 * Feat: CLeanup runs once every 14 days. - we were planning to do it on every app launch/wzrk fetch - after discussion with team we decided to do it once in 14 days * Feat: CLeanup runs once every 14 days. - we were planning to do it on every app launch/wzrk fetch - after discussion with team we decided to do it once in 14 days * Feat: Prefetch only for client side inapps - do not want to touch code for legacy inapps and server side inapps - have applied preload to only cs inapps urls and commented out others * Chore: variable naming * Feat: Gif url collection - cached gif urls separately as we were putting all in image cache * Feat: Fetch all gifs method - added method to fetch all gifs in repo - only had method for images, added dup method with similar impl * Feat: Preloader load gifs method - added method to preload gif in preloader classes - had handled it for images - used same base logic, only checked for gif in cache instead of img * Test: Testing the gifs prefetch and caching - added tests for strategy and repo class for gif support - needed to perform assertions in gif methods * Feat: preloading gifs correctly - preloading in correct cache - they were sent it image cache due to incomplete impl * Chore: default constructor args - so caller does not have to pass defaults - added jvmoverloads for java support * Feat: used executors instead of coroutines - used executors since it is used in legacy * Build: toml file and version bump - updated core sdk version - toml file used for test coroutines lib * chore(inapp) - add java doc for EvaluationManager SDK-3565 * chore(inapp) - add missing java doc for TriggerAdapter SDK-3565 * chore(inapp) - add java doc for StoreRegistry SDK-3565 * chore(inapp) - add java doc for StoreProvider SDK-3565 * chore(inapp) - update java doc for LimitsMatcher SDK-3565 * chore(inapp) - add java doc for LimitAdapter SDK-3565 * chore(inapp) - add java doc for LegacyInAppStore SDK-3565 * chore(inapp) - add missing java doc for InAppStore SDK-3565 * chore(inapp) - add java doc for InAppQueue SDK-3565 * chore(inapp) - add java doc for CTPreference SDK-3565 * chore(inapp) - add java doc for ICTPreference SDK-3565 * chore(inapp) - add missing java doc for CTXtensions SDK-3565 * chore(inapp) - remove TODOs * refactor(inapp) - remove unused cryptHandler * refactor(inapp) - resolve todos * refactor(inapp) - replace Locale.US with Locale.getDefault() in ImpressionManager * feat(inapp) - clear inApp triggers for stale inApps * chore(inapp) - remove unused CryptHandler SDK-3587 * chore(inapp) - remove semicolon and unused imports SDK-3587 * chore(inapp) - remove commented code SDK-3587 * chore(inapp) - remove todos SDK-3587 * chore(inapp) - add comments on invokeBatchListener SDK-3587 * chore(inapp) - remove unused import SDK-3587 * chore(inapp) - fix failing tests and remove BaseTestCase inheritance SDK-3587 * Bug: gif caching - incorrectly assigned image list to gif download queue. - fixed this issue be passing correct list. * Bug: Issue with cleanup - we need to clear all assets which are unused instead of only images - we were only checking for images and not gifs * Bug: Method to expose all preload assets - missed from last commit * Review: added restrict to annotation * Review: Injected dependency * Review: Double locked checking to save resources * refactor(inapp) - update preview payload retrieval using `getString` for consistency * refactor(inapp) - remove unused toJsonObject() from TriggerAdapter * chore(inapp): Ignore sample/release folder * refactor(inapp): Add OR condition to evaluate the value of excludeFromCaps in the configureWithJson method * chore(inapp) - remove versions.properties SDK-3587 * chore(inapp) - remove ClockTest SDK-3587 * chore(inapp) - use logging to print error SDK-3587 * chore(inapp) - remove toMutableList conversion SDK-3587 * chore(inapp) - make dateFormatter variable global SDK-3587 * chore(inapp) - remove matchChargedEvent SDK-3587 * chore(inapp) - modify when expression to make it exhaustive SDK-3587 * chore(inapp) - add safe cast for JSONObject SDK-3587 * feat(inapp): Add display condition for HTML in-apps to prevent showing when there's no network * Review: Download PN bitmap with correct timeouts - timeouts are less for PN image download * Review: Evict old resource - do not cache large resources - also evict stale resource in that case since cache will return incorrect entry * Review: removed todo - it was not needed * fix(merging) - fix merge conflict with develop * Feat: Inapp asset store per account level - do not need a store class per user level - removed the dependency on device id initisation for initialising asset store * fix(inapp) - show next queued inApps when current in app is html and device is offline SDK-3587 * feat(inapp) - update getImpressionCount logic with binary search SDK-3587 * Bug: Inapp not getting displayed after dismissing app launch inapp - this was due to backpressed deprecation - based on android os version and certain gesture flags the back pressed does not get called in some apps - handled by removed code from back pressed and moving to finish and destroy --------- Co-authored-by: piyush.kukadiya <[email protected]> Co-authored-by: CTLalit <[email protected]> Co-authored-by: CTLalit <[email protected]> Co-authored-by: piyush-kukadiya <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Image pre loading in inapps
Details: #495