diff --git a/.github/workflows/claude-code-review.yml b/.github/workflows/claude-code-review.yml
new file mode 100644
index 0000000000..4f6145beb8
--- /dev/null
+++ b/.github/workflows/claude-code-review.yml
@@ -0,0 +1,44 @@
+name: Claude Code Review
+
+on:
+ pull_request:
+ types: [opened, synchronize, ready_for_review, reopened]
+ # Optional: Only run on specific file changes
+ # paths:
+ # - "src/**/*.ts"
+ # - "src/**/*.tsx"
+ # - "src/**/*.js"
+ # - "src/**/*.jsx"
+
+jobs:
+ claude-review:
+ # Optional: Filter by PR author
+ # if: |
+ # github.event.pull_request.user.login == 'external-contributor' ||
+ # github.event.pull_request.user.login == 'new-developer' ||
+ # github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
+
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ pull-requests: read
+ issues: read
+ id-token: write
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 1
+
+ - name: Run Claude Code Review
+ id: claude-review
+ uses: anthropics/claude-code-action@v1
+ with:
+ anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
+ plugin_marketplaces: 'https://github.com/anthropics/claude-code.git'
+ plugins: 'code-review@claude-code-plugins'
+ prompt: '/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}'
+ # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
+ # or https://code.claude.com/docs/en/cli-reference for available options
+
diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml
new file mode 100644
index 0000000000..79fe056478
--- /dev/null
+++ b/.github/workflows/claude.yml
@@ -0,0 +1,50 @@
+name: Claude Code
+
+on:
+ issue_comment:
+ types: [created]
+ pull_request_review_comment:
+ types: [created]
+ issues:
+ types: [opened, assigned]
+ pull_request_review:
+ types: [submitted]
+
+jobs:
+ claude:
+ if: |
+ (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
+ (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
+ (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
+ (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ pull-requests: read
+ issues: read
+ id-token: write
+ actions: read # Required for Claude to read CI results on PRs
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 1
+
+ - name: Run Claude Code
+ id: claude
+ uses: anthropics/claude-code-action@v1
+ with:
+ anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
+
+ # This is an optional setting that allows Claude to read CI results on PRs
+ additional_permissions: |
+ actions: read
+
+ # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
+ # prompt: 'Update the pull request description to include a summary of changes.'
+
+ # Optional: Add claude_args to customize behavior and configuration
+ # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
+ # or https://code.claude.com/docs/en/cli-reference for available options
+ # claude_args: '--allowed-tools Bash(gh pr:*)'
+
diff --git a/.github/workflows/create-release-pr.yml b/.github/workflows/create-release-pr.yml
index b1badcf805..c2bfcdb54c 100644
--- a/.github/workflows/create-release-pr.yml
+++ b/.github/workflows/create-release-pr.yml
@@ -70,7 +70,7 @@ jobs:
fetch-tags: true
- name: Setup Git User
- uses: OneSignal/sdk-actions/.github/actions/setup-git-user@main
+ uses: OneSignal/sdk-shared/.github/actions/setup-git-user@main
- name: Create release branch from base
run: |
@@ -86,7 +86,7 @@ jobs:
- name: Update SDK_VERSION in gradle.properties
run: |
sed -i "s/^SDK_VERSION=.*/SDK_VERSION=$VERSION/" OneSignalSDK/gradle.properties
- sed -i "s/^SDK_VERSION=.*/SDK_VERSION=$VERSION/" Examples/OneSignalDemo/gradle.properties
+ sed -i "s/^SDK_VERSION=.*/SDK_VERSION=$VERSION/" examples/demo/gradle.properties
- name: Commit and Push changes
run: |
@@ -110,9 +110,6 @@ jobs:
- name: Generate Release Notes from PR Titles
id: generate_notes
run: |
- echo "## 🔖 Auto-Generated Release Notes" > pr_body.md
- echo "" >> pr_body.md
-
if [[ "$VERSION" == *"alpha"* ]]; then
CHANNEL="alpha"
elif [[ "$VERSION" == *"beta"* ]]; then
diff --git a/.github/workflows/lint-pr-title.yml b/.github/workflows/lint-pr-title.yml
index 164f72fe56..fd44677d6d 100644
--- a/.github/workflows/lint-pr-title.yml
+++ b/.github/workflows/lint-pr-title.yml
@@ -10,5 +10,5 @@ on:
jobs:
call:
- uses: OneSignal/sdk-actions/.github/workflows/lint-pr-title.yml@main
+ uses: OneSignal/sdk-shared/.github/workflows/lint-pr-title.yml@main
secrets: inherit
diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml
index cb58cbc996..d59c2d725a 100644
--- a/.github/workflows/publish-release.yml
+++ b/.github/workflows/publish-release.yml
@@ -163,8 +163,6 @@ jobs:
CHANNEL="current"
fi
- echo -e "Channels: $CHANNEL\n\n$(cat release_notes.md)" > release_notes.md
-
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
@@ -180,7 +178,7 @@ jobs:
wrapper_prs:
needs: publish
- uses: OneSignal/sdk-actions/.github/workflows/create-wrapper-prs.yml@main
+ uses: OneSignal/sdk-shared/.github/workflows/create-wrapper-prs.yml@main
secrets:
GH_PUSH_TOKEN: ${{ secrets.GH_PUSH_TOKEN }}
with:
diff --git a/.gitignore b/.gitignore
index 0cd7cbc570..b2f46c5ab1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,7 +6,7 @@ build/
# Local properties
local.properties
OneSignalSDK/local.properties
-Examples/OneSignalDemo/local.properties
+examples/demo/local.properties
# macOS
.DS_Store
@@ -18,7 +18,7 @@ Examples/OneSignalDemo/local.properties
# Captures
captures/
OneSignalSDK/captures/
-Examples/OneSignalDemo/captures/
+examples/demo/captures/
# GPG files
*.gpg
diff --git a/Examples/OneSignalDemo/.gitignore b/Examples/OneSignalDemo/.gitignore
deleted file mode 100644
index 24bfabcdf9..0000000000
--- a/Examples/OneSignalDemo/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-.gradle
-local.properties
-.DS_Store
-/build
-/captures
-*.gpg
-/**/.idea
-*.iml
\ No newline at end of file
diff --git a/Examples/OneSignalDemo/app/build.gradle b/Examples/OneSignalDemo/app/build.gradle
deleted file mode 100644
index c994d6615d..0000000000
--- a/Examples/OneSignalDemo/app/build.gradle
+++ /dev/null
@@ -1,122 +0,0 @@
-plugins {
- id 'com.android.application'
- id 'kotlin-android'
-}
-
-android {
- namespace 'com.onesignal.sdktest'
- compileSdkVersion 34
- defaultConfig {
- minSdkVersion 21
- targetSdkVersion 34
- versionCode 1
- versionName "1.0"
- multiDexEnabled true
-
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- flavorDimensions "default"
- }
-
-// signingConfigs {
-// huawei {
-// storeFile file('SdkTest.jks')
-// keyAlias 'SdkTest'
-// keyPassword ''
-// storePassword ''
-// v1SigningEnabled true
-// v2SigningEnabled true
-// }
-// }
-
- productFlavors {
- gms {
- dimension "default"
- applicationId "com.onesignal.sdktest"
- }
- huawei {
- dimension "default"
- minSdkVersion 21
- applicationId "com.onesignal.sdktest"
- }
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- debug {
-// signingConfig null
-// productFlavors.huawei.signingConfig signingConfigs.huawei
- debuggable true
- // Note: profileable is automatically enabled when debuggable=true
- // Enable method tracing for detailed performance analysis
- testCoverageEnabled false
- }
- // Profileable release build for performance testing
- profileable {
- initWith release
- debuggable false
- profileable true
- minifyEnabled false
- signingConfig signingConfigs.debug
- matchingFallbacks = ['release']
- }
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- // Forced downgrade to Java 1.8 for compiling the application due to Android N error when building
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- packagingOptions {
- exclude 'androidsupportmultidexversion.txt'
- }
-
- task flavorSelection() {
- def tasksList = gradle.startParameter.taskRequests.toString()
- if (tasksList.contains('Gms')) {
- apply plugin: 'com.google.gms.google-services'
- googleServices { disableVersionCheck = true }
- } else if (tasksList.contains('Huawei')) {
- apply plugin: 'com.huawei.agconnect'
- }
- }
-}
-
-dependencies {
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion"
- implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
- implementation 'androidx.multidex:multidex:2.0.1'
- implementation 'androidx.cardview:cardview:1.0.0'
- implementation 'androidx.appcompat:appcompat:1.5.1'
- implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
-
- implementation 'com.google.android.material:material:1.7.0'
- implementation 'com.google.android.gms:play-services-location:21.0.0'
-
- implementation 'com.github.bumptech.glide:glide:4.12.0'
-
- /** START - Google Play Builds **/
- gmsImplementation("com.onesignal:OneSignal:$SDK_VERSION")
- /** END - Google Play Builds **/
-
- /** START - Huawei Builds **/
- // Omit Google / Firebase libraries for Huawei builds.
- huaweiImplementation("com.onesignal:OneSignal:$SDK_VERSION") {
- exclude group: 'com.google.android.gms', module: 'play-services-gcm'
- exclude group: 'com.google.android.gms', module: 'play-services-analytics'
- exclude group: 'com.google.android.gms', module: 'play-services-location'
- exclude group: 'com.google.firebase', module: 'firebase-messaging'
- }
- // Add HMS Push library
- huaweiImplementation 'com.huawei.hms:push:6.3.0.304'
- // Optionally add HMS location
- huaweiImplementation 'com.huawei.hms:location:4.0.0.300'
- /** END - Huawei Builds **/
-}
diff --git a/Examples/OneSignalDemo/app/src/huawei/AndroidManifest.xml b/Examples/OneSignalDemo/app/src/huawei/AndroidManifest.xml
deleted file mode 100644
index 6778b0ea3b..0000000000
--- a/Examples/OneSignalDemo/app/src/huawei/AndroidManifest.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Examples/OneSignalDemo/app/src/huawei/java/com/onesignal/sdktest/notification/HmsMessageServiceAppLevel.java b/Examples/OneSignalDemo/app/src/huawei/java/com/onesignal/sdktest/notification/HmsMessageServiceAppLevel.java
deleted file mode 100644
index 1d49484664..0000000000
--- a/Examples/OneSignalDemo/app/src/huawei/java/com/onesignal/sdktest/notification/HmsMessageServiceAppLevel.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.onesignal.sdktest.notification;
-
-import android.os.Bundle;
-import android.util.Log;
-
-import com.huawei.hms.push.HmsMessageService;
-import com.huawei.hms.push.RemoteMessage;
-import com.onesignal.notifications.bridges.OneSignalHmsEventBridge;
-import com.onesignal.sdktest.constant.Tag;
-
-public class HmsMessageServiceAppLevel extends HmsMessageService {
-
- /**
- * When an app calls the getToken method to apply for a token from the server,
- * if the server does not return the token during current method calling, the server can return the token through this method later.
- * This method callback must be completed in 10 seconds. Otherwise, you need to start a new Job for callback processing.
- *
- * @param token token
- * @param bundle bundle
- */
- @Override
- public void onNewToken(String token, Bundle bundle) {
- Log.d(Tag.LOG_TAG, "HmsMessageServiceAppLevel onNewToken refresh token:" + token + " bundle: " + bundle);
-
- // Forward event on to OneSignal SDK
- OneSignalHmsEventBridge.INSTANCE.onNewToken(this, token, bundle);
- }
-
- @Deprecated
- @Override
- public void onNewToken(String token) {
- Log.d(Tag.LOG_TAG, "HmsMessageServiceAppLevel onNewToken refresh token:" + token);
-
- // Forward event on to OneSignal SDK
- OneSignalHmsEventBridge.INSTANCE.onNewToken(this, token);
- }
-
- /**
- * This method is called in the following cases:
- * 1. "Data messages" - App process is alive when received.
- * 2. "Notification Message" - foreground_show = false and app is in focus
- * This method callback must be completed in 10 seconds. Start a new Job if more time is needed.
- *
- * @param message RemoteMessage
- */
- @Override
- public void onMessageReceived(RemoteMessage message) {
- Log.d(Tag.LOG_TAG, "HMS onMessageReceived: " + message);
- Log.d(Tag.LOG_TAG, "HMS onMessageReceived.ttl:" + message.getTtl());
- Log.d(Tag.LOG_TAG, "HMS onMessageReceived.data:" + message.getData());
- Log.d(Tag.LOG_TAG, "HMS onMessageReceived.title: " + message.getNotification().getTitle());
- Log.d(Tag.LOG_TAG, "HMS onMessageReceived.body: " + message.getNotification().getBody());
- Log.d(Tag.LOG_TAG, "HMS onMessageReceived.icon: " + message.getNotification().getIcon());
- Log.d(Tag.LOG_TAG, "HMS onMessageReceived.color: " + message.getNotification().getColor());
- Log.d(Tag.LOG_TAG, "HMS onMessageReceived.channelId: " + message.getNotification().getChannelId());
- Log.d(Tag.LOG_TAG, "HMS onMessageReceived.imageURL: " + message.getNotification().getImageUrl());
- Log.d(Tag.LOG_TAG, "HMS onMessageReceived.tag: " + message.getNotification().getTag());
-
- // Forward event on to OneSignal SDK
- OneSignalHmsEventBridge.INSTANCE.onMessageReceived(this, message);
- }
-}
diff --git a/Examples/OneSignalDemo/app/src/main/assets/api_key.txt b/Examples/OneSignalDemo/app/src/main/assets/api_key.txt
deleted file mode 100644
index 652febffec..0000000000
--- a/Examples/OneSignalDemo/app/src/main/assets/api_key.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Insert Amazon API Key here.
-https://documentation.onesignal.com/docs/generate-an-amazon-api-key
\ No newline at end of file
diff --git a/Examples/OneSignalDemo/app/src/main/assets/fonts/Sarala-Bold.ttf b/Examples/OneSignalDemo/app/src/main/assets/fonts/Sarala-Bold.ttf
deleted file mode 100644
index f9c11ca794..0000000000
Binary files a/Examples/OneSignalDemo/app/src/main/assets/fonts/Sarala-Bold.ttf and /dev/null differ
diff --git a/Examples/OneSignalDemo/app/src/main/assets/fonts/Sarala-Regular.ttf b/Examples/OneSignalDemo/app/src/main/assets/fonts/Sarala-Regular.ttf
deleted file mode 100644
index df722b2ad3..0000000000
Binary files a/Examples/OneSignalDemo/app/src/main/assets/fonts/Sarala-Regular.ttf and /dev/null differ
diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/activity/MainActivity.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/activity/MainActivity.java
deleted file mode 100644
index 82f307615e..0000000000
--- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/activity/MainActivity.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.onesignal.sdktest.activity;
-
-import android.os.Build;
-import android.os.Bundle;
-
-import androidx.annotation.RequiresApi;
-import androidx.appcompat.app.AppCompatActivity;
-
-import com.onesignal.OneSignal;
-import com.onesignal.sdktest.R;
-import com.onesignal.sdktest.model.MainActivityViewModel;
-
-@RequiresApi(api = Build.VERSION_CODES.N)
-public class MainActivity extends AppCompatActivity {
-
- private MainActivityViewModel viewModel;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main_activity_layout);
-
- viewModel = new MainActivityViewModel();
- OneSignal.getNotifications().addPermissionObserver(viewModel);
-// TODO("STILL SUPPORT?")
-// OneSignal.addSubscriptionObserver(viewModel);
-// OneSignal.addEmailSubscriptionObserver(viewModel);
- viewModel.onActivityCreated(this)
- .setupInterfaceElements();
- }
-
- @Override
- public void onBackPressed() {
- if (!viewModel.scrollToTopIfAvailable()) {
- super.onBackPressed();
- overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
- }
- }
-
- @Override
- protected void onResume() {
- super.onResume();
-
- boolean hasConsent = OneSignal.getConsentGiven();
- if (hasConsent)
- viewModel.setupLayout();
- }
-}
diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/activity/SecondaryActivity.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/activity/SecondaryActivity.java
deleted file mode 100644
index da5f893a2d..0000000000
--- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/activity/SecondaryActivity.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.onesignal.sdktest.activity;
-
-import androidx.appcompat.app.AppCompatActivity;
-
-import android.os.Bundle;
-
-import com.onesignal.sdktest.R;
-
-public class SecondaryActivity extends AppCompatActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_secondary);
- }
-}
\ No newline at end of file
diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/activity/SplashActivity.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/activity/SplashActivity.java
deleted file mode 100644
index 677be26ab5..0000000000
--- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/activity/SplashActivity.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.onesignal.sdktest.activity;
-
-import android.os.Bundle;
-
-import androidx.appcompat.app.AppCompatActivity;
-
-import com.onesignal.sdktest.R;
-import com.onesignal.sdktest.model.SplashActivityViewModel;
-
-public class SplashActivity extends AppCompatActivity {
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.splash_activity_layout);
-
- new SplashActivityViewModel()
- .onActivityCreated(this)
- .setupInterfaceElements();
- }
-
- @Override
- public void onBackPressed() {
- super.onBackPressed();
- overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
- }
-
-}
diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/EnumSelectionRecyclerViewAdapter.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/EnumSelectionRecyclerViewAdapter.java
deleted file mode 100644
index 4331ba050b..0000000000
--- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/EnumSelectionRecyclerViewAdapter.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.onesignal.sdktest.adapter;
-
-import android.content.Context;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import com.onesignal.sdktest.R;
-import com.onesignal.sdktest.callback.EnumSelectionCallback;
-import com.onesignal.sdktest.util.Font;
-
-public class EnumSelectionRecyclerViewAdapter extends RecyclerView.Adapter {
-
- private Font font;
- private LayoutInflater layoutInflater;
-
- private Context context;
- private Object[] enums;
- private EnumSelectionCallback callback;
-
-
- public EnumSelectionRecyclerViewAdapter(Context context, Object[] enums, EnumSelectionCallback callback) {
- this.context = context;
- this.enums = enums;
- this.callback = callback;
-
- this.font = new Font(context);
- this.layoutInflater = LayoutInflater.from(context);
- }
-
-
- @Override
- public int getItemViewType(int position) {
- return 0;
- }
-
- @NonNull
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View view = layoutInflater.inflate(R.layout.enum_selection_recycler_view_item_layout, parent, false);
- view.setHasTransientState(true);
- return new EnumSelectionViewHolder(view);
- }
-
- @Override
- public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
- ((EnumSelectionViewHolder) holder).setData(position, enums[position].toString());
- }
-
- @Override
- public int getItemCount() {
- return enums.length;
- }
-
-
- public class EnumSelectionViewHolder extends RecyclerView.ViewHolder {
-
- private RelativeLayout enumRelativeLayout;
- private TextView enumTextView;
-
- private String title;
-
- EnumSelectionViewHolder(View itemView) {
- super(itemView);
-
- enumRelativeLayout = itemView.findViewById(R.id.enum_selection_recycler_view_item_relative_layout);
- enumTextView = itemView.findViewById(R.id.enum_selection_recycler_view_item_text_view);
- }
-
- private void setData(int position, String title) {
- this.title = title;
- populateInterfaceElements(position);
- }
-
- private void populateInterfaceElements(int position) {
- enumRelativeLayout.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- callback.onSelection(title);
- }
- });
-
- font.applyFont(enumTextView, font.saralaRegular);
- enumTextView.setText(title);
- }
-
- }
-
-}
diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/InAppMessageRecyclerViewAdapter.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/InAppMessageRecyclerViewAdapter.java
deleted file mode 100644
index fe6884c1c2..0000000000
--- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/InAppMessageRecyclerViewAdapter.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package com.onesignal.sdktest.adapter;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.os.Handler;
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.request.target.BitmapImageViewTarget;
-import com.onesignal.sdktest.R;
-import com.onesignal.sdktest.type.InAppMessage;
-import com.onesignal.sdktest.type.ToastType;
-import com.onesignal.sdktest.util.Animate;
-import com.onesignal.sdktest.util.Toaster;
-
-public class InAppMessageRecyclerViewAdapter extends RecyclerView.Adapter {
-
- private Animate animate;
- private LayoutInflater layoutInflater;
- private Toaster toaster;
-
- private Context context;
- private InAppMessage[] inAppMessages;
-
-
- public InAppMessageRecyclerViewAdapter(Context context, InAppMessage[] inAppMessages) {
- this.context = context;
- this.inAppMessages = inAppMessages;
-
- this.animate = new Animate();
- this.layoutInflater = LayoutInflater.from(context);
- this.toaster = new Toaster(context);
- }
-
-
- @Override
- public int getItemViewType(int position) {
- return 0;
- }
-
- @NonNull
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View view = layoutInflater.inflate(R.layout.main_in_app_messages_recycler_view_item_layout, parent, false);
- view.setHasTransientState(true);
- return new InAppMessageViewHolder(view);
- }
-
- @Override
- public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
- ((InAppMessageViewHolder) holder).setData(position, inAppMessages[position]);
- }
-
- @Override
- public int getItemCount() {
- return inAppMessages.length;
- }
-
-
- public class InAppMessageViewHolder extends RecyclerView.ViewHolder {
-
- private LinearLayout inAppMessageLinearLayout;
- private ImageView inAppMessageImageView;
- private ProgressBar inAppMessageProgressBar;
- private TextView inAppMessageTextView;
-
- private InAppMessage inAppMessage;
-
- InAppMessageViewHolder(View itemView) {
- super(itemView);
-
- inAppMessageLinearLayout = itemView.findViewById(R.id.in_app_message_recycler_view_item_linear_layout);
- inAppMessageImageView = itemView.findViewById(R.id.in_app_message_recycler_view_item_image_view);
- inAppMessageProgressBar = itemView.findViewById(R.id.in_app_message_recycler_view_item_progress_bar);
- inAppMessageTextView = itemView.findViewById(R.id.in_app_message_recycler_view_item_text_view);
- }
-
- private void setData(int position, InAppMessage inAppMessage) {
- this.inAppMessage = inAppMessage;
- populateInterfaceElements(position);
- }
-
- private void populateInterfaceElements(int position) {
- animate.toggleAnimationView(true, View.INVISIBLE, inAppMessageImageView, inAppMessageProgressBar);
-
- inAppMessageLinearLayout.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- String message = "In-App Messaging Coming Soon...";
- toaster.makeCustomViewToast(message, ToastType.INFO);
- }
- });
-
- inAppMessageTextView.setText(inAppMessage.getTitle());
-
- Glide.with(context)
- .asBitmap()
- .load(inAppMessage.getIconUrl())
- .into(new BitmapImageViewTarget(inAppMessageImageView) {
- @Override
- protected void setResource(Bitmap resource) {
- inAppMessageImageView.setImageBitmap(resource);
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- animate.toggleAnimationView(false, View.INVISIBLE, inAppMessageImageView, inAppMessageProgressBar);
- }
- }, 300);
- }
- });
- }
-
- }
-
-}
diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/NotificationRecyclerViewAdapter.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/NotificationRecyclerViewAdapter.java
deleted file mode 100644
index b4cb9050f3..0000000000
--- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/NotificationRecyclerViewAdapter.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package com.onesignal.sdktest.adapter;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.os.Handler;
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.request.target.BitmapImageViewTarget;
-import com.onesignal.sdktest.R;
-import com.onesignal.sdktest.notification.OneSignalNotificationSender;
-import com.onesignal.sdktest.type.Notification;
-import com.onesignal.sdktest.util.Animate;
-
-public class NotificationRecyclerViewAdapter extends RecyclerView.Adapter {
-
- private Animate animate;
- private LayoutInflater layoutInflater;
-
- private Context context;
- private Notification[] notifications;
-
-
- public NotificationRecyclerViewAdapter(Context context, Notification[] notifications) {
- this.context = context;
- this.notifications = notifications;
-
- this.animate = new Animate();
- this.layoutInflater = LayoutInflater.from(context);
- }
-
-
- @Override
- public int getItemViewType(int position) {
- return 0;
- }
-
- @NonNull
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View view = layoutInflater.inflate(R.layout.main_notifications_recycler_view_item_layout, parent, false);
- view.setHasTransientState(true);
- return new NotificationViewHolder(view);
- }
-
- @Override
- public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
- ((NotificationViewHolder) holder).setData(position, notifications[position]);
- }
-
- @Override
- public int getItemCount() {
- return notifications.length;
- }
-
-
- public class NotificationViewHolder extends RecyclerView.ViewHolder {
-
- private LinearLayout notificationLinearLayout;
- private ImageView notificationImageView;
- private ProgressBar notificationProgressBar;
- private TextView notificationTextView;
-
- private Notification notification;
-
- NotificationViewHolder(View itemView) {
- super(itemView);
-
- notificationLinearLayout = itemView.findViewById(R.id.notification_recycler_view_item_linear_layout);
- notificationImageView = itemView.findViewById(R.id.notification_recycler_view_item_image_view);
- notificationProgressBar = itemView.findViewById(R.id.notification_recycler_view_item_progress_bar);
- notificationTextView = itemView.findViewById(R.id.notification_recycler_view_item_text_view);
- }
-
- private void setData(int position, Notification notification) {
- this.notification = notification;
- populateInterfaceElements(position);
- }
-
- private void populateInterfaceElements(int position) {
- animate.toggleAnimationView(true, View.INVISIBLE, notificationImageView, notificationProgressBar);
-
- notificationLinearLayout.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- OneSignalNotificationSender.sendDeviceNotification(notification);
- }
- });
-
- notificationTextView.setText(notification.getGroup());
-
- Glide.with(context)
- .asBitmap()
- .load(notification.getIconUrl())
- .into(new BitmapImageViewTarget(notificationImageView) {
- @Override
- protected void setResource(Bitmap resource) {
- notificationImageView.setImageBitmap(resource);
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- animate.toggleAnimationView(false, View.INVISIBLE, notificationImageView, notificationProgressBar);
- }
- }, 300);
- }
- });
- }
-
- }
-
-}
diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/PairRecyclerViewAdapter.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/PairRecyclerViewAdapter.java
deleted file mode 100644
index 6315ba5b0d..0000000000
--- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/PairRecyclerViewAdapter.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.onesignal.sdktest.adapter;
-
-import android.content.Context;
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import com.onesignal.sdktest.R;
-import com.onesignal.sdktest.callback.PairItemActionCallback;
-import com.onesignal.sdktest.util.Util;
-
-import java.util.ArrayList;
-import java.util.Map;
-
-public class PairRecyclerViewAdapter extends RecyclerView.Adapter {
-
- private LayoutInflater layoutInflater;
-
- private Context context;
-
- private ArrayList tags;
- private PairItemActionCallback callback;
-
- public PairRecyclerViewAdapter(Context context, ArrayList tags, PairItemActionCallback callback) {
- this.context = context;
-
- this.tags = tags;
- this.callback = callback;
-
- layoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int position) {
- View view = layoutInflater.inflate(R.layout.pair_recycler_view_item_layout, parent, false);
- view.setHasTransientState(true);
- return new PairViewHolder(view);
- }
-
- @Override
- public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
- ((PairViewHolder) holder).setData(position, tags.get(position));
- }
-
- @Override
- public int getItemCount() {
- return tags.size();
- }
-
- public class PairViewHolder extends RecyclerView.ViewHolder {
-
- private RelativeLayout pairRelativeLayout;
- private TextView pairKeyTextView;
- private TextView pairValueTextView;
-
- private Map.Entry pair;
-
- PairViewHolder(View itemView) {
- super(itemView);
-
- pairRelativeLayout = itemView.findViewById(R.id.pair_recycler_view_item_relative_layout);
- pairKeyTextView = itemView.findViewById(R.id.pair_recycler_view_item_key_text_view);
- pairValueTextView = itemView.findViewById(R.id.pair_recycler_view_item_value_text_view);
- }
-
- private void setData(int position, Map.Entry pair) {
- this.pair = pair;
- populateInterfaceElements(position);
- }
-
- private void populateInterfaceElements(final int position) {
-
- pairKeyTextView.setText(pair.getKey().toString());
-
- String value = pair.getValue().toString();
-
- if (Util.isBoolean(value))
- value += " (bool)";
- else if (Util.isInteger(value))
- value += " (int)";
- else if (Util.isFloat(value))
- value += " (float)";
- else
- value += " (str)";
- pairValueTextView.setText(value);
-
- pairRelativeLayout.setOnLongClickListener(new View.OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- callback.onLongClick(pair.getKey().toString());
- return false;
- }
- });
-
- }
-
- }
-
-}
diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/SingleRecyclerViewAdapter.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/SingleRecyclerViewAdapter.java
deleted file mode 100644
index 7cae936707..0000000000
--- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/adapter/SingleRecyclerViewAdapter.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.onesignal.sdktest.adapter;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.onesignal.sdktest.R;
-import com.onesignal.sdktest.callback.SingleItemActionCallback;
-import com.onesignal.sdktest.util.Util;
-
-import java.util.ArrayList;
-
-public class SingleRecyclerViewAdapter extends RecyclerView.Adapter {
-
- private LayoutInflater layoutInflater;
-
- private Context context;
-
- private ArrayList