Skip to content

Conversation

phatblat
Copy link
Member

@phatblat phatblat commented Oct 6, 2025

Preview 3 is not yet public. It is accessible to authorized users via the maven central staging APIs.

  • Renamed java-spring/ to java-server/
  • Added java-server/java-spring-maven/ subproject for testing Maven compatibility

@phatblat phatblat self-assigned this Oct 6, 2025
@phatblat phatblat force-pushed the ben/kotlin-java-5.0-preview.3 branch 2 times, most recently from e0d95f1 to f133c2f Compare October 10, 2025 16:44
@phatblat phatblat marked this pull request as ready for review October 10, 2025 16:44
@phatblat phatblat requested a review from busec0 as a code owner October 10, 2025 16:44
@phatblat phatblat requested review from Copilot and russhwolf October 10, 2025 16:44
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Upgrades Kotlin Multiplatform and Java applications to use Ditto SDK version 5.0.0-preview.3, updating the API implementation to match the new SDK interface.

  • Updated Ditto SDK version from 5.0.0-preview.1 to 5.0.0-preview.3
  • Migrated from DittoIdentity-based authentication to new authentication provider pattern
  • Changed API method calls to use new naming conventions (e.g., registerObserver to observe, getString to asString)

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
kotlin-multiplatform/composeApp/build.gradle.kts Updated Ditto dependency versions to 5.0.0-preview.3
kotlin-multiplatform/composeApp/src/commonMain/kotlin/com/ditto/quickstart/ditto/DittoManager.kt Refactored Ditto initialization to use new authentication pattern and updated API calls
kotlin-multiplatform/composeApp/src//kotlin/com/ditto/quickstart/ditto/DittoManager..kt Updated platform-specific Ditto creation to use DittoFactory
kotlin-multiplatform/composeApp/src/commonMain/kotlin/com/ditto/quickstart/data/DittoCredentials.kt Added new data class for Ditto credentials
kotlin-multiplatform/composeApp/src/commonMain/kotlin/com/ditto/quickstart/di/DittoModule.kt Updated dependency injection to include credentials
kotlin-multiplatform/composeApp/src/commonMain/kotlin/com/ditto/quickstart/data/repository/DittoTaskRepository.kt Updated API method call from registerObserver to observe
kotlin-multiplatform/composeApp/src/commonMain/kotlin/com/ditto/quickstart/ui/TaskAddEditScreen.kt Minor UI layout adjustment
kotlin-multiplatform/README.md Updated API reference link to preview.3 version
java-spring/src/main/java/com/ditto/example/spring/quickstart/service/DittoService.java Migrated to new authentication pattern and updated transport configuration
java-spring/src/main/java/com/ditto/example/spring/quickstart/service/DittoTaskService.java Updated API method calls to use new naming conventions
java-spring/build.gradle.kts Updated Ditto dependency versions to 5.0.0-preview.3
java-spring/java-spring-maven/pom.xml Added Maven configuration with preview.3 dependencies

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@phatblat phatblat force-pushed the ben/kotlin-java-5.0-preview.3 branch from f133c2f to f7377a2 Compare October 14, 2025 23:53
@phatblat phatblat requested a review from a team as a code owner October 14, 2025 23:55
@phatblat phatblat force-pushed the ben/kotlin-java-5.0-preview.3 branch 3 times, most recently from 4735823 to 988c595 Compare October 15, 2025 15:30
@phatblat phatblat force-pushed the ben/kotlin-java-5.0-preview.3 branch from 988c595 to 1990e36 Compare October 17, 2025 22:16
@phatblat phatblat force-pushed the ben/kotlin-java-5.0-preview.3 branch from 1990e36 to b9055f9 Compare October 17, 2025 22:49
Copy link

@russhwolf russhwolf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the expected status of tests? The browserstack CI failure also happens for me locally, and I have similar failures in both the Android and iOS integration tests which are not being run in CI.

Otherwise, mostly nits here.

@Nonnull
public Flux<List<Task>> observeAll() {
final String selectQuery = "SELECT * FROM %s WHERE NOT deleted ORDER BY title ASC".formatted(TASKS_COLLECTION_NAME);
final String selectQuery = "SELECT * FROM %s WHERE NOT deleted".formatted(TASKS_COLLECTION_NAME);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any particular reason to drop the ORDER BY here? The equivalent in the KMP quickstart retains it.


- [Kotlin Multiplatform Roadmap and Support Policy](https://docs.ditto.live/sdk/latest/install-guides/kotlin/multiplatform-roadmap)
- [API Reference](https://software.ditto.live/java/ditto-java/5.0.0-preview.1/api-reference/)
- [API Reference](https://software.ditto.live/java/ditto-java/5.0.0-preview.3/api-reference/)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new API reference doesn't appear to be deployed yet

Comment on lines -34 to +41
private val scope = CoroutineScope(SupervisorJob())
val secrets: DittoSecretsConfiguration

constructor(secrets: DittoSecretsConfiguration) {
this.secrets = secrets
this.scope = CoroutineScope(SupervisorJob())
}

private val scope: CoroutineScope

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: this change isn't really necessary, but it all works fine.

I don't see any reason the scope needs to move inside a constructor. For the DittoSecretsConfiguration, you could just as easily statically reference it in-line, though storing it as a property protects against some potential refactors.

Comment on lines -48 to -51
// Cloud sync is intentionally disabled to avoid authentication issues in test environments.
// When enabled, Ditto Cloud Sync requires additional auth setup that causes certificate
// validation failures in BrowserStack. Disabling ensures sync occurs via WebSocket URLs only.
enableDittoCloudSync = false,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This configuration is no longer happening explicitly. Is there any reason we might still want to hold onto some version of the comment? (I lean toward no, but want to ask the question anyway)

).apply {
auth?.setExpirationHandler { ditto, secondsRemaining ->
// Authenticate when a token is expiring
val clientInfo = ditto.auth?.login(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clientInfo is unused here

provider = DittoAuthenticationProvider.development(),
)
}
}.apply {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: All this stuff could live in a single apply block instead of two

Copy link

@russhwolf russhwolf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moving to approve after in-person convo that we haven't been maintaining those tests. We should probably update them at some point but I don't want to gatekeep this PR on that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants