Skip to content
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

fix!: leverage @StateFactoryMarker to flag State object creation without remember or similar mechanisms. #516

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.Saver
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshots.StateFactoryMarker
import androidx.compose.runtime.staticCompositionLocalOf
import com.google.android.gms.maps.CameraUpdate
import com.google.android.gms.maps.CameraUpdateFactory
Expand Down Expand Up @@ -59,7 +60,7 @@ public inline fun rememberCameraPositionState(
*
* @param position the initial camera position
*/
public class CameraPositionState(
public class CameraPositionState private constructor(
position: CameraPosition = CameraPosition(LatLng(0.0, 0.0), 0f, 0f, 0f)
) {
/**
Expand Down Expand Up @@ -302,6 +303,16 @@ public class CameraPositionState(
}

public companion object {
/**
* Creates a new [CameraPositionState] object
*
* @param position the initial camera position
*/
@StateFactoryMarker
public operator fun invoke(
position: CameraPosition = CameraPosition(LatLng(0.0, 0.0), 0f, 0f, 0f)
): CameraPositionState = CameraPositionState(position)

/**
* The default saver implementation for [CameraPositionState]
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import androidx.compose.runtime.rememberCompositionContext
import androidx.compose.runtime.saveable.Saver
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshots.StateFactoryMarker
import androidx.compose.ui.geometry.Offset
import com.google.android.gms.maps.model.AdvancedMarkerOptions
import com.google.android.gms.maps.model.BitmapDescriptor
Expand Down Expand Up @@ -72,9 +73,7 @@ public enum class DragState {
*
* @param position the initial marker position
*/
public class MarkerState(
position: LatLng = LatLng(0.0, 0.0),
) {
public class MarkerState private constructor(position: LatLng) {
/**
* Current position of the marker.
*/
Expand Down Expand Up @@ -113,6 +112,16 @@ public class MarkerState(
}

public companion object {
/**
* Creates a new [MarkerState] object
*
* @param position the initial marker position
*/
@StateFactoryMarker
public operator fun invoke(
position: LatLng = LatLng(0.0, 0.0)
): MarkerState = MarkerState(position)

/**
* The default saver implementation for [MarkerState]
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshots.StateFactoryMarker
import com.google.android.gms.maps.model.TileOverlay
import com.google.android.gms.maps.model.TileProvider
import com.google.maps.android.ktx.addTileOverlay
Expand Down Expand Up @@ -122,7 +123,7 @@ public fun TileOverlay(
*
* [clearTileCache] can be called to request that the map refresh these tiles.
*/
public class TileOverlayState {
public class TileOverlayState private constructor() {

internal var tileOverlay: TileOverlay? by mutableStateOf(null)

Expand All @@ -139,6 +140,13 @@ public class TileOverlayState {
.clearTileCache()
}

public companion object {
/**
* Creates a new [TileOverlayState] object
*/
@StateFactoryMarker
public operator fun invoke(): TileOverlayState = TileOverlayState()
}
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshots.StateFactoryMarker
import com.google.android.gms.maps.StreetViewPanorama
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.StreetViewPanoramaCamera
Expand All @@ -18,7 +19,7 @@ public inline fun rememberStreetViewCameraPositionState(
StreetViewCameraPositionState().apply(init)
}

public class StreetViewCameraPositionState {
public class StreetViewCameraPositionState private constructor() {

/**
* The location of the panorama.
Expand Down Expand Up @@ -86,4 +87,13 @@ public class StreetViewCameraPositionState {
public fun setPosition(panoId: String) {
panorama?.setPosition(panoId)
}

public companion object {
/**
* Creates a new [StreetViewCameraPositionState] object
*/
@StateFactoryMarker
public operator fun invoke(): StreetViewCameraPositionState =
StreetViewCameraPositionState()
}
}