package com.kickstarter.ui.views; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.widget.ScrollView; import com.kickstarter.KSApplication; import com.kickstarter.R; import com.kickstarter.libs.DeviceRegistrarType; import com.kickstarter.libs.PushNotifications; import com.kickstarter.models.pushdata.Activity; import com.kickstarter.models.pushdata.GCM; import com.kickstarter.services.apiresponses.PushNotificationEnvelope; import javax.inject.Inject; import butterknife.ButterKnife; import butterknife.OnClick; public final class DebugPushNotificationsView extends ScrollView { protected @Inject DeviceRegistrarType deviceRegistrar; protected @Inject PushNotifications pushNotifications; private static final String PROJECT_PHOTO = "https://ksr-ugc.imgix.net/projects/1176555/photo-original.png?v=1407175667&w=120&h=120&fit=crop&auto=format&q=92&s=2065d33620d4fef280c4c2d451c2fa93"; private static final String USER_PHOTO = "https://ksr-ugc.imgix.net/avatars/1583412/portrait.original.png?v=1330782076&w=120&h=120&fit=crop&auto=format&q=92&s=a9029da56a3deab8c4b87818433e3430"; private static final Long PROJECT_ID = 1761344210L; public DebugPushNotificationsView(final @NonNull Context context) { this(context, null); } public DebugPushNotificationsView(final @NonNull Context context, final @Nullable AttributeSet attrs) { this(context, attrs, 0); } public DebugPushNotificationsView(final @NonNull Context context, final @Nullable AttributeSet attrs, final int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onFinishInflate() { super.onFinishInflate(); ButterKnife.bind(this); if (isInEditMode()) { return; } ((KSApplication) getContext().getApplicationContext()).component().inject(this); } @OnClick(R.id.register_device_button) public void registerDeviceButtonClick() { deviceRegistrar.registerDevice(); } @OnClick(R.id.unregister_device_button) public void unregisterDeviceButtonClick() { deviceRegistrar.unregisterDevice(); } @OnClick(R.id.simulate_friend_backing_button) public void simulateFriendBackingButtonClick() { final GCM gcm = GCM.builder() .title("Check it out") .alert("Christopher Wright backed SKULL GRAPHIC TEE.") .build(); final Activity activity = Activity.builder() .category(com.kickstarter.models.Activity.CATEGORY_BACKING) .id(1) .projectId(PROJECT_ID) .projectPhoto(PROJECT_PHOTO) .build(); final PushNotificationEnvelope envelope = PushNotificationEnvelope.builder().activity(activity).gcm(gcm).build(); pushNotifications.add(envelope); } @OnClick(R.id.simulate_friend_follow_button) public void simulateFriendFollowButtonClick() { final GCM gcm = GCM.builder() .title("You're in good company") .alert("Christopher Wright is following you on Kickstarter!") .build(); final Activity activity = Activity.builder() .category(com.kickstarter.models.Activity.CATEGORY_FOLLOW) .id(2) .userPhoto(USER_PHOTO) .build(); final PushNotificationEnvelope envelope = PushNotificationEnvelope.builder().activity(activity).gcm(gcm).build(); pushNotifications.add(envelope); } @OnClick(R.id.simulate_project_cancellation_button) public void simulateProjectCancellationButtonClick() { final GCM gcm = GCM.builder() .title("Kickstarter") .alert("SKULL GRAPHIC TEE has been canceled.") .build(); final Activity activity = Activity.builder() .category(com.kickstarter.models.Activity.CATEGORY_CANCELLATION) .id(3) .projectId(PROJECT_ID) .projectPhoto(PROJECT_PHOTO) .build(); final PushNotificationEnvelope envelope = PushNotificationEnvelope.builder().activity(activity).gcm(gcm).build(); pushNotifications.add(envelope); } @OnClick(R.id.simulate_project_failure_button) public void simulateProjectFailureButtonClick() { final GCM gcm = GCM.builder() .title("Kickstarter") .alert("SKULL GRAPHIC TEE was not successfully funded.") .build(); final Activity activity = Activity.builder() .category(com.kickstarter.models.Activity.CATEGORY_FAILURE) .id(4) .projectId(PROJECT_ID) .projectPhoto(PROJECT_PHOTO) .build(); final PushNotificationEnvelope envelope = PushNotificationEnvelope.builder().activity(activity).gcm(gcm).build(); pushNotifications.add(envelope); } @OnClick(R.id.simulate_project_launch_button) public void simulateProjectLaunchButtonClick() { final GCM gcm = GCM.builder() .title("Want to be the first backer?") .alert("Taylor Moore just launched a project!") .build(); final Activity activity = Activity.builder() .category(com.kickstarter.models.Activity.CATEGORY_LAUNCH) .id(5) .projectId(PROJECT_ID) .build(); final PushNotificationEnvelope envelope = PushNotificationEnvelope.builder().activity(activity).gcm(gcm).build(); pushNotifications.add(envelope); } @OnClick(R.id.simulate_project_reminder_button) public void simulateProjectReminderButtonClick() { final GCM gcm = GCM.builder() .title("Last call") .alert("Reminder! SKULL GRAPHIC TEE is ending soon.") .build(); final PushNotificationEnvelope envelope = PushNotificationEnvelope.builder() .gcm(gcm) .project(PushNotificationEnvelope.Project.builder().id(PROJECT_ID).photo(PROJECT_PHOTO).build()) .build(); pushNotifications.add(envelope); } @OnClick(R.id.simulate_project_success_button) public void simulateProjectSuccessButtonClick() { pushNotifications.add(projectSuccessEnvelope()); } @OnClick(R.id.simulate_project_update_button) public void simulateProjectUpdateButtonClick() { final GCM gcm = GCM.builder() .title("News from Taylor Moore") .alert("Update #1 posted by SKULL GRAPHIC TEE.") .build(); final Activity activity = Activity.builder() .category(com.kickstarter.models.Activity.CATEGORY_UPDATE) .id(7) .projectId(PROJECT_ID) .projectPhoto(PROJECT_PHOTO) .updateId(1033848L) .build(); final PushNotificationEnvelope envelope = PushNotificationEnvelope.builder().activity(activity).gcm(gcm).build(); pushNotifications.add(envelope); } @OnClick(R.id.simulate_burst_button) public void simulateBurstClick() { final PushNotificationEnvelope baseEnvelope = projectSuccessEnvelope(); for (int i = 0; i < 100; i++) { // Create a different signature for each push notification final GCM gcm = baseEnvelope.gcm().toBuilder().alert(Integer.toString(i)).build(); pushNotifications.add(baseEnvelope.toBuilder().gcm(gcm).build()); } } private @NonNull PushNotificationEnvelope projectSuccessEnvelope() { final GCM gcm = GCM.builder() .title("Time to celebrate!") .alert("SKULL GRAPHIC TEE has been successfully funded.") .build(); final Activity activity = Activity.builder() .category(com.kickstarter.models.Activity.CATEGORY_SUCCESS) .id(6) .projectId(PROJECT_ID) .projectPhoto(PROJECT_PHOTO) .build(); return PushNotificationEnvelope.builder().activity(activity).gcm(gcm).build(); } }