Skip to content

Commit

Permalink
[Cleanup] Moving a bunch of classes into android package (pt2). (#202)
Browse files Browse the repository at this point in the history
* Move FragmentKey into android package.

* Moving a couple classes to android package.

* Move BaseFormulaFragment into android package.

* Move DisposableScope into android package.

* Hiding Binding classes from public API.

* Move AppManager into android.internal package.

* [Cleanup] Moving a bunch of classes into android package (pt3). (#204)

* Move BackCallback into android package.

* Move FragmentLifecycleEvent into android.events package.

* Move Integration into android package.

* Move remaining fragments classes into android package. (#205)
  • Loading branch information
Laimiux committed May 17, 2021
1 parent 9e7a3ab commit a415b34
Show file tree
Hide file tree
Showing 62 changed files with 116 additions and 142 deletions.
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,18 @@
- Move `FragmentId` into `android` package.
- Move `FormulaAppCompatActivity` into `android` package.
- Move `ActivityResult` into `android.events` package.
- Move `FragmentKey` into `android` package.
- Move BaseFormulaFragment into `android` package.
- Move `DisposableScope` into `android` package.
- Move `FormulaFragment` into `android` package.
- Move `BackCallback` into `android` package.
- Move `FragmentLifecycleEvent` into `android.events` package.
- Move `Integration` into `android` package.
- Move `FragmentLifecycleCallback` into `android` package.
- Move `FragmentComponent` into `android` package.
- Move `FragmentContract` into `android` package.
- Move `FragmentFlowState` into `android` package.
- Move `FragmentFlowStore` into `android` package.

## [0.6.1] - November 18, 2020
- Bugfix: Fix runtime ignoring `Formula.key` for the root formula.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package com.instacart.formula.test

import android.view.View
import com.instacart.formula.R
import com.instacart.formula.fragment.FragmentComponent
import com.instacart.formula.fragment.FragmentContract
import com.instacart.formula.android.FragmentComponent
import com.instacart.formula.android.FragmentContract
import kotlinx.android.parcel.Parcelize

@Parcelize
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package com.instacart.formula.test

import android.view.View
import com.instacart.formula.R
import com.instacart.formula.fragment.FragmentComponent
import com.instacart.formula.fragment.FragmentContract
import com.instacart.formula.android.FragmentComponent
import com.instacart.formula.android.FragmentContract
import kotlinx.android.parcel.Parcelize

@Parcelize
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import android.os.Bundle
import androidx.annotation.VisibleForTesting
import com.instacart.formula.FormulaAndroid
import com.instacart.formula.R
import com.instacart.formula.fragment.FormulaFragment
import com.instacart.formula.fragment.FragmentContract
import com.instacart.formula.fragment.FragmentKey
import com.instacart.formula.android.FormulaFragment
import com.instacart.formula.android.FragmentContract
import com.instacart.formula.android.FragmentKey
import com.instacart.formula.android.FormulaAppCompatActivity

class TestFragmentActivity : FormulaAppCompatActivity() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ package com.instacart.formula.test
import android.view.View
import com.instacart.formula.RenderView
import com.instacart.formula.Renderer
import com.instacart.formula.fragment.FragmentComponent
import com.instacart.formula.fragment.FragmentContract
import com.instacart.formula.fragment.FragmentLifecycleCallback
import com.instacart.formula.android.FragmentComponent
import com.instacart.formula.android.FragmentContract
import com.instacart.formula.android.FragmentLifecycleCallback

object TestFragmentComponent {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ package com.instacart.formula.test
import android.os.Bundle
import android.view.View
import com.instacart.formula.R
import com.instacart.formula.fragment.FragmentComponent
import com.instacart.formula.fragment.FragmentContract
import com.instacart.formula.fragment.FragmentLifecycleCallback
import com.instacart.formula.android.FragmentComponent
import com.instacart.formula.android.FragmentContract
import com.instacart.formula.android.FragmentLifecycleCallback
import kotlinx.android.parcel.IgnoredOnParcel
import kotlinx.android.parcel.Parcelize

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import androidx.test.core.app.ActivityScenario
import androidx.test.ext.junit.rules.ActivityScenarioRule
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat
import com.instacart.formula.fragment.FragmentContract
import com.instacart.formula.fragment.FragmentFlowState
import com.instacart.formula.fragment.FragmentKey
import com.instacart.formula.integration.BackCallback
import com.instacart.formula.android.FragmentContract
import com.instacart.formula.android.FragmentFlowState
import com.instacart.formula.android.FragmentKey
import com.instacart.formula.android.BackCallback
import com.instacart.formula.test.TestContract
import com.instacart.formula.test.TestContractWithId
import com.instacart.formula.test.TestFragmentActivity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import androidx.test.core.app.ActivityScenario
import androidx.test.ext.junit.rules.ActivityScenarioRule
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat
import com.instacart.formula.fragment.FormulaFragment
import com.instacart.formula.fragment.FragmentContract
import com.instacart.formula.android.FormulaFragment
import com.instacart.formula.android.FragmentContract
import com.instacart.formula.android.ActivityStoreContext
import com.instacart.formula.test.TestContract
import com.instacart.formula.test.TestContractWithId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ import androidx.annotation.VisibleForTesting
import androidx.fragment.app.FragmentActivity
import com.instacart.formula.android.ActivityConfigurator
import com.instacart.formula.android.events.ActivityResult
import com.instacart.formula.fragment.FragmentEnvironment
import com.instacart.formula.android.FragmentEnvironment
import com.instacart.formula.android.internal.ActivityStoreFactory
import com.instacart.formula.android.AppManager
import com.instacart.formula.fragment.FragmentKey
import com.instacart.formula.android.internal.AppManager
import com.instacart.formula.android.FragmentKey
import java.lang.IllegalStateException

object FormulaAndroid {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package com.instacart.formula.android

import androidx.fragment.app.FragmentActivity
import com.instacart.formula.fragment.FragmentFlowState
import com.instacart.formula.fragment.FragmentFlowStore
import com.instacart.formula.fragment.FragmentLifecycleEvent
import com.instacart.formula.android.events.FragmentLifecycleEvent
import io.reactivex.rxjava3.disposables.Disposable

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@ package com.instacart.formula.android
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Lifecycle
import com.instacart.formula.android.events.ActivityResult
import com.instacart.formula.fragment.FragmentFlowState
import com.instacart.formula.fragment.FragmentFlowStore
import com.instacart.formula.fragment.FragmentKey
import com.instacart.formula.fragment.FragmentLifecycleEvent
import com.instacart.formula.android.events.FragmentLifecycleEvent
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.disposables.Disposable

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.instacart.formula.integration
package com.instacart.formula.android

/**
* Used to indicate that a screen render model
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.instacart.formula.fragment
package com.instacart.formula.android

interface BaseFormulaFragment<State> {

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.instacart.formula.integration
package com.instacart.formula.android

/**
* Defines a component that can be disposed. This enables us to clean up
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package com.instacart.formula.android

import io.reactivex.rxjava3.core.Observable
import com.instacart.formula.fragment.FormulaFragment
import com.instacart.formula.fragment.FragmentFlowStore

/**
* Feature is based on uni-directional state management where a single state model drives
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
package com.instacart.formula.android

import com.instacart.formula.fragment.FormulaFragment
import com.instacart.formula.fragment.FragmentKey
import com.instacart.formula.fragment.FragmentFlowStore

/**
* Feature factory is responsible for creating a [Feature] for a specific [fragment key][Key].
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ package com.instacart.formula.android

import android.view.View
import com.instacart.formula.Cancelable
import com.instacart.formula.fragment.FragmentLifecycleCallback
import com.instacart.formula.fragment.FormulaFragment
import io.reactivex.rxjava3.core.Observable

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.instacart.formula.android

import com.instacart.formula.android.internal.Bindings

/**
* A flow defines a group of features that share a same [FlowComponent].
*/
data class Flow<FlowComponent>(
val bindings: Bindings<FlowComponent>
data class Flow<FlowComponent> @PublishedApi internal constructor(
internal val bindings: Bindings<FlowComponent>
) {
companion object {
/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.instacart.formula.android

import com.instacart.formula.integration.DisposableScope

/**
* A flow factory enables to group multiple fragments and share state, routers, action handlers
* and other dependencies between them. A shared [FlowComponent] will be instantiated when user
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package com.instacart.formula.fragment
package com.instacart.formula.android

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.instacart.formula.Cancelable
import com.instacart.formula.android.FeatureView
import com.instacart.formula.android.ViewFactory
import com.jakewharton.rxrelay3.BehaviorRelay

class FormulaFragment : Fragment(), BaseFormulaFragment<Any> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package com.instacart.formula.android

import com.instacart.formula.android.internal.Binding
import com.instacart.formula.android.internal.Bindings
import com.instacart.formula.android.internal.FunctionUtils
import com.instacart.formula.android.views.FragmentContractViewFactory
import com.instacart.formula.fragment.FragmentContract
import com.instacart.formula.fragment.FragmentKey
import com.instacart.formula.android.internal.FeatureBinding
import com.instacart.formula.integration.Integration
import io.reactivex.rxjava3.core.Observable
import java.lang.IllegalStateException
import kotlin.reflect.KClass
Expand Down Expand Up @@ -191,7 +190,8 @@ class FragmentBindingBuilder<Component> {
bind(binding)
}

fun build(): Bindings<Component> {
@PublishedApi
internal fun build(): Bindings<Component> {
return Bindings(
types = types,
bindings = bindings
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.instacart.formula.fragment
package com.instacart.formula.android

import com.instacart.formula.Renderer
import com.instacart.formula.RenderView
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.instacart.formula.fragment
package com.instacart.formula.android

import android.view.View

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.instacart.formula.fragment
package com.instacart.formula.android

data class FragmentEnvironment(
val onScreenError: (FragmentKey, Throwable) -> Unit = { _, it -> throw it }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
package com.instacart.formula.fragment

import com.instacart.formula.android.FragmentId
import com.instacart.formula.android.FeatureEvent
import com.instacart.formula.android.FragmentState
package com.instacart.formula.android

/**
* Represents currently [activeKeys] and their [states].
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
package com.instacart.formula.fragment
package com.instacart.formula.android

import com.instacart.formula.Evaluation
import com.instacart.formula.Formula
import com.instacart.formula.FormulaContext
import com.instacart.formula.android.FragmentId
import com.instacart.formula.rxjava3.RxStream
import com.instacart.formula.android.Binding
import com.instacart.formula.android.FeatureEvent
import com.instacart.formula.integration.DisposableScope
import com.instacart.formula.android.FragmentBindingBuilder
import com.instacart.formula.android.FragmentState
import com.instacart.formula.android.internal.Binding
import com.instacart.formula.android.events.FragmentLifecycleEvent
import com.instacart.formula.rxjava3.toObservable
import com.jakewharton.rxrelay3.PublishRelay
import io.reactivex.rxjava3.core.Observable

/**
* A FragmentFlowStore is responsible for managing the state of multiple [FragmentContract] instances.
*/
class FragmentFlowStore(
class FragmentFlowStore @PublishedApi internal constructor(
private val root: Binding<Unit>
) : Formula<FragmentEnvironment, FragmentFlowState, FragmentFlowState> {
companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.instacart.formula.android

import com.instacart.formula.fragment.FragmentKey

/**
* An object used to identify a fragment. It combines both a user generated [key] and
* a generated [String] id.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.instacart.formula.fragment
package com.instacart.formula.android

import android.os.Parcelable
import androidx.fragment.app.FragmentManager
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.instacart.formula.fragment
package com.instacart.formula.android

import android.os.Bundle
import android.view.View
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.instacart.formula.android

import com.instacart.formula.fragment.FragmentKey

/**
* Defines the current render model for a specific [key].
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.instacart.formula.integration
package com.instacart.formula.android

import io.reactivex.rxjava3.core.Observable

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package com.instacart.formula.android
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.annotation.LayoutRes
import com.instacart.formula.fragment.FormulaFragment
import com.instacart.formula.android.views.DelegateLayoutViewFactory

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import android.view.View
import com.instacart.formula.RenderView
import com.instacart.formula.Renderer
import com.instacart.formula.android.views.FeatureViewBindFunction
import com.instacart.formula.fragment.FormulaFragment
import com.instacart.formula.fragment.FragmentLifecycleCallback

/**
* View instance contains an initialized Android [view] and provides factory
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.instacart.formula.fragment
package com.instacart.formula.android.events

import com.instacart.formula.android.FragmentId

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.instacart.formula.android.internal
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Lifecycle
import com.instacart.formula.android.events.ActivityResult
import com.instacart.formula.fragment.FragmentEnvironment
import com.instacart.formula.android.FragmentEnvironment
import com.instacart.formula.android.ActivityStore
import io.reactivex.rxjava3.disposables.CompositeDisposable
import io.reactivex.rxjava3.disposables.Disposable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package com.instacart.formula.android.internal
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Lifecycle
import com.instacart.formula.android.events.ActivityResult
import com.instacart.formula.fragment.FragmentFlowState
import com.instacart.formula.fragment.FragmentKey
import com.instacart.formula.android.FragmentFlowState
import com.instacart.formula.android.FragmentKey
import com.instacart.formula.android.FragmentId
import com.instacart.formula.android.ActivityStoreContext
import com.jakewharton.rxrelay3.BehaviorRelay
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.instacart.formula.android.internal

import androidx.fragment.app.FragmentActivity
import com.instacart.formula.android.ActivityConfigurator
import com.instacart.formula.fragment.FragmentEnvironment
import com.instacart.formula.android.FragmentEnvironment
import kotlin.reflect.KClass

internal class ActivityStoreFactory internal constructor(
Expand Down
Loading

0 comments on commit a415b34

Please sign in to comment.