Skip to content

Instantly share code, notes, and snippets.

View dhruvtaneja's full-sized avatar

Dhruv Taneja dhruvtaneja

  • Uber
  • Bangalore, India
View GitHub Profile
@dhruvtaneja
dhruvtaneja / OnCreate.java
Last active August 27, 2017 11:23
onCreate.java
View view = null;
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
switch (viewType) {
case TYPE_PROMOTIONAL_NOTIFICATION:
view = layoutInflater.inflate(R.layout.layout_promotional_notification, parent, false);
break;
case TYPE_APPOINTMENT_NOTIFICATION:
view = layoutInflater.inflate(R.layout.type_appointment_notification, parent, false);
break;
@dhruvtaneja
dhruvtaneja / ViewType.java
Created August 27, 2017 11:57
ViewType.java
private static final int TYPE_PROMOTIONAL_NOTIFICATION = 1;
private static final int TYPE_APPOINTMENT_NOTIFICATION = 2;
private static final int TYPE_QUERY_RESPONSE_NOTIFICATION = 3;
private static final int TYPE_ORDER_STATUS_NOTIFICATION = 4;
@Override
public int getItemViewType(int position) {
switch(nofitications.get(position).layoutType) {
case "PROMOTIONAL":
return TYPE_PROMOTIONAL_NOTIFICATION;
@dhruvtaneja
dhruvtaneja / TodoHomeViewModel.kt
Created June 23, 2018 09:49
todo home viewmodel
val todoCardsList: ObservableArrayList<ItemViewModel> = ObservableArrayList()
fun getTodoCards(force: Boolean): Maybe<Array<TodoCard>> {}
fun handleCardsResponse(cards: Array<TodoCard>) {}
private fun getViewModels(todoCards: List<TodoCard>): ArrayList<TodoCardViewModel> {}
@dhruvtaneja
dhruvtaneja / AppHomeViewModel.kt
Last active June 23, 2018 12:14
app home viewmodel
val segmentsViewModels: ObservableArrayList<AppSegmentViewModel> = ObservableArrayList()
private fun getViewModelsFromSegments(appSegments: ArrayList<AppSegment>): ArrayList<AppSegmentViewModel> {}
private fun loadAppSegments() {
// get the app segments
segmentsViewModels.addAll(getViewModelsFromSegments(appSegments))
}
fun start() {
if (appHomeViewModel.isTodoInHome()) {
val todoHomeViewModel = getTodoHomeViewModel()
appHomeViewModel.todoHomeViewModel = todoHomeViewModel
initializeObserversForTodo()
appHomeViewModel.todoHomeViewModel.todoCardsList.addOnListChangedCallback{
...
onItemRangeInserted {
appHomeViewModel.updateTodoCards(list)
}
...
@dhruvtaneja
dhruvtaneja / AppHomeViewModelTest.kt
Created June 23, 2018 12:51
app home viewmodel test
@Test
fun testIsTodoInHome() {
whenever(firebaseRemoteConfig.getString(AbTestingUtils.FirebaseParamKeys.AB_TEST_HOME_SCREEN_VERSION_ANDROID))
.thenReturn(AbTestingUtils.FirebaseParamValues.HOME_TODO)
assertThat(viewModel.isTodoInHome()).isTrue()
whenever(firebaseRemoteConfig.getString(AbTestingUtils.FirebaseParamKeys.AB_TEST_HOME_SCREEN_VERSION_ANDROID))
.thenReturn(AbTestingUtils.FirebaseParamValues.HOME_DEFAULT)
@dhruvtaneja
dhruvtaneja / MainActivity_InAppUpdates.kt
Last active May 27, 2019 16:32
Android activity that checks for app updates
class MainActivity : AppCompatActivity() {
private lateinit var appUpdateManager: AppUpdateManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
appUpdateManager = AppUpdateManagerFactory.create(this)
@dhruvtaneja
dhruvtaneja / MainActivity_RequestUpdate.kt
Last active May 27, 2019 16:49
function that fires up update request flow
private fun requestUpdate(appUpdateInfo: AppUpdateInfo?) {
appUpdateManager.startUpdateFlowForResult(
appUpdateInfo,
AppUpdateType.FLEXIBLE, // HERE specify the type of update flow you want
this, // the instance of an activity
REQUEST_CODE_FLEXIBLE_UPDATE
)
}
@dhruvtaneja
dhruvtaneja / ImmediateUpdate_OnResume.kt
Created May 27, 2019 17:25
Handling activity lifecycle during immediate in-app update
override fun onResume() {
super.onResume()
appUpdateManager.appUpdateInfo.addOnSuccessListener {
if (it.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
appUpdateManager.startUpdateFlowForResult(
it,
AppUpdateType.IMMEDIATE,
this,
REQUEST_CODE_FLEXI_UPDATE
)
class MainActivity : AppCompatActivity(), InstallStateUpdatedListener {
override fun onStateUpdate(installState: InstallState) {
if (installState.installStatus() == InstallStatus.DOWNLOADED) {
notifyUser()
}
}
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)