Skip to content

Js Support#250

Open
KevinSchildhorn wants to merge 37 commits into
mainfrom
ks/Web4
Open

Js Support#250
KevinSchildhorn wants to merge 37 commits into
mainfrom
ks/Web4

Conversation

@KevinSchildhorn
Copy link
Copy Markdown
Contributor

@KevinSchildhorn KevinSchildhorn commented Apr 22, 2026

Web Support

This PR adds Web support for Droidcon.

Note: This PR uses JS, not WASM, because of certain limitations of libraries. When those libraries are updated we can include WASM Support.

Note: The UI is not final, hence the draft. We are using Adaptive Layout and need to adjust some small parts

How to run:
./gradlew web:jsBrowserDevelopmentRun

To test local times, you need to set testNotificationTimes = true in shared/src/commonMain/kotlin/co/touchlab/droidcon/domain/service/impl/DefaultSyncService.kt

Screenshots

I have to fix these

Android Web
Screenshot 2026-04-22 at 1 53 14 PM Screenshot_20260422_141042
Screenshot 2026-04-22 at 2 11 00 PM
Screenshot 2026-04-22 at 2 11 31 PM Screenshot_20260422_141054
Screenshot 2026-04-22 at 2 12 38 PM Screenshot_20260422_141133
Screenshot 2026-04-22 at 2 13 32 PM Screenshot_20260422_141339
Screenshot 2026-04-22 at 2 13 50 PM Screenshot_20260422_141352
Screenshot 2026-04-22 at 2 14 08 PM Screenshot_20260422_141401
Screenshot 2026-04-22 at 2 14 12 PM Screenshot_20260422_141415
Screenshot 2026-04-22 at 2 15 14 PM Screenshot_20260422_141511
Screenshot 2026-04-22 at 2 17 15 PM Screenshot_20260422_141649

@KevinSchildhorn KevinSchildhorn marked this pull request as draft April 22, 2026 12:53
@KevinSchildhorn KevinSchildhorn marked this pull request as ready for review April 22, 2026 18:49
Copy link
Copy Markdown

@wellingtoncosta wellingtoncosta left a comment

Choose a reason for hiding this comment

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

Left some comments. LGTM overall.

}
}
}
/*
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Can we remove this dead code?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

removed

),
)

return initKoin(
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Philosophical discussion: should all dependencies be a single?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

That's a fair question. Some should definitely be singles such as the Database or Settings, ResourceReader could be anything. I don't think there's a downside to them being singles? None of them need scope or need a fresh item

Comment thread build.gradle.kts Outdated
}
}

/*
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Can be removed?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

removed

suspend fun getCollectionName(): String
suspend fun getApiKey(): String
suspend fun getScheduleId(): String
suspend fun showVenueMap(): Boolean
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Why don't we use the showVenueMap declared in Conference?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Actually it looks like this function isn't removed anywhere, I've removed it.

@@ -5,14 +5,14 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.datetime.TimeZone

interface ConferenceConfigProvider {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Could we expose the domain entity instead of fragmenting it into methods that are like a getter?

suspend fun getCurrent(): Conference
fun observeChanges(): Flow<Conference>

Looking at the DefaultConferenceConfigProvider, all the methods are basically a "proxy" of the actual currentConference.

By the way, this way it'd look more like a Repository than a Provider, which is kinda vague concept in domain module.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

We could potentially do that, but it would be a somewhat large refactor and it doesn't affect the web support so I'd rather handle that at a later time.

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