Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,10 @@ package fr.androidmakers.di

import fr.androidmakers.domain.interactor.OpenMapUseCase
import fr.androidmakers.domain.interactor.ShareSessionUseCase
import fr.androidmakers.domain.utils.UrlOpener
import org.koin.core.module.dsl.factoryOf
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.module

actual val domainPlatformModule = module {
singleOf(::UrlOpener)

factoryOf(::OpenMapUseCase)
factoryOf(::ShareSessionUseCase)
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import fr.androidmakers.domain.interactor.MergeBookmarksUseCase
import fr.androidmakers.domain.interactor.OpenBlueskyAccountUseCase
import fr.androidmakers.domain.interactor.OpenCocUseCase
import fr.androidmakers.domain.interactor.OpenFaqUseCase
import fr.androidmakers.domain.interactor.OpenLinkUseCase
import fr.androidmakers.domain.interactor.OpenPartnerLinkUseCase
import fr.androidmakers.domain.interactor.OpenXAccountUseCase
import fr.androidmakers.domain.interactor.OpenXHashtagUseCase
Expand All @@ -37,6 +36,5 @@ val domainModule = module {
factoryOf(::GetPartnersUseCase)
factoryOf(::GetFavoriteSessionsUseCase)
factoryOf(::OpenPartnerLinkUseCase)
factoryOf(::OpenLinkUseCase)
factoryOf(::ApplyForAppClinicUseCase)
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,10 @@ package fr.androidmakers.di

import fr.androidmakers.domain.interactor.OpenMapUseCase
import fr.androidmakers.domain.interactor.ShareSessionUseCase
import fr.androidmakers.domain.utils.UrlOpener
import org.koin.core.module.dsl.factoryOf
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.module

actual val domainPlatformModule = module {
singleOf(::UrlOpener)

factoryOf(::OpenMapUseCase)
factoryOf(::ShareSessionUseCase)
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
package fr.androidmakers.domain

import android.content.Context

actual class PlatformContext(val context: Context)
actual typealias PlatformContext = android.content.Context
Original file line number Diff line number Diff line change
@@ -1,28 +1,29 @@
package fr.androidmakers.domain.interactor

import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
import android.net.Uri
import fr.androidmakers.domain.PlatformContext
import fr.androidmakers.domain.utils.UrlOpener
import androidx.core.net.toUri

actual class OpenMapUseCase(
private val urlOpener: UrlOpener
) {
actual operator fun invoke(platformContext: PlatformContext, coordinates: String, name: String) {
actual class OpenMapUseCase() {
actual operator fun invoke(context: Context, coordinates: String, name: String) {
val venueCoordinatesUri = Uri.Builder()
.scheme("geo")
.encodedAuthority(coordinates)
.appendQueryParameter("q", name)
.build()
try {
val intent = Intent(Intent.ACTION_VIEW, venueCoordinatesUri)
platformContext.context.startActivity(intent)
} catch (e: Exception) {
// Open in Webview
urlOpener.openUrl(
platformContext = platformContext,
url = "https://www.google.com/maps/?q=" + coordinates.filter { it != ' ' }
)
context.startActivity(intent)
} catch (_: ActivityNotFoundException) {
// Open in browser
val fallbackUri = ("https://www.google.com/maps/?q=" + coordinates.filter { it != ' ' }).toUri()
try {
val intent = Intent(Intent.ACTION_VIEW, fallbackUri)
context.startActivity(intent)
} catch (_: ActivityNotFoundException) {
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
package fr.androidmakers.domain.interactor

import android.content.Context
import androidx.core.app.ShareCompat
import fr.androidmakers.domain.PlatformContext
import fr.androidmakers.domain.model.Session
import fr.androidmakers.domain.model.Speaker

actual class ShareSessionUseCase {
actual operator fun invoke(
platformContext: PlatformContext,
context: Context,
session: Session,
speakers: List<Speaker>,
formattedDateAndRoom: String
) {
val context = platformContext.context
val shareText = if (speakers.isEmpty()) {
"%s: %s (%s)".format(
// TODO put this in resources
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
package fr.androidmakers.domain

expect class PlatformContext
expect abstract class PlatformContext
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package fr.androidmakers.domain.interactor

import fr.androidmakers.domain.PlatformContext
import fr.androidmakers.domain.model.APPLY_FOR_APP_CLINIC_MAILTO_URL
import fr.androidmakers.domain.utils.UrlOpener

class ApplyForAppClinicUseCase(
private val urlOpener: UrlOpener
) {
operator fun invoke(platformContext: PlatformContext) {
urlOpener.openUrl(platformContext, APPLY_FOR_APP_CLINIC_MAILTO_URL)
class ApplyForAppClinicUseCase() {
operator fun invoke(urlOpener: UrlOpener) {
urlOpener.openUrl(APPLY_FOR_APP_CLINIC_MAILTO_URL)
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
package fr.androidmakers.domain.interactor

import fr.androidmakers.domain.PlatformContext
import fr.androidmakers.domain.utils.UrlOpener

class OpenBlueskyAccountUseCase(
private val urlOpener: UrlOpener
) {
operator fun invoke(platformContext: PlatformContext) {
urlOpener.openUrl(platformContext, "https://bsky.app/search?q=%23AMxDC25")
class OpenBlueskyAccountUseCase() {
operator fun invoke(urlOpener: UrlOpener) {
urlOpener.openUrl("https://bsky.app/search?q=%23AMxDC25")
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package fr.androidmakers.domain.interactor

import fr.androidmakers.domain.PlatformContext
import fr.androidmakers.domain.utils.Constants
import fr.androidmakers.domain.utils.UrlOpener

class OpenCocUseCase(
private val urlOpener: UrlOpener
) {
operator fun invoke(platformContext: PlatformContext) =
urlOpener.openUrl(platformContext, Constants.Urls.coc)
class OpenCocUseCase() {
operator fun invoke(urlOpener: UrlOpener) {
urlOpener.openUrl(Constants.Urls.coc)
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package fr.androidmakers.domain.interactor

import fr.androidmakers.domain.PlatformContext
import fr.androidmakers.domain.utils.Constants
import fr.androidmakers.domain.utils.UrlOpener

class OpenFaqUseCase(
private val urlOpener: UrlOpener
) {
operator fun invoke(platformContext: PlatformContext) =
urlOpener.openUrl(platformContext, Constants.Urls.faq)
class OpenFaqUseCase() {
operator fun invoke(urlOpener: UrlOpener) {
urlOpener.openUrl(Constants.Urls.faq)
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ package fr.androidmakers.domain.interactor
import fr.androidmakers.domain.PlatformContext

expect class OpenMapUseCase {
operator fun invoke(platformContext: PlatformContext, coordinates: String, name: String)
operator fun invoke(context: PlatformContext, coordinates: String, name: String)
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package fr.androidmakers.domain.interactor

import fr.androidmakers.domain.PlatformContext
import fr.androidmakers.domain.model.Partner
import fr.androidmakers.domain.utils.UrlOpener

class OpenPartnerLinkUseCase(
private val urlOpener: UrlOpener
) {
operator fun invoke(platformContext: PlatformContext, partner: Partner) {
urlOpener.openUrl(platformContext, partner.url)
class OpenPartnerLinkUseCase() {
operator fun invoke(urlOpener: UrlOpener, partner: Partner) {
urlOpener.openUrl(partner.url)
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package fr.androidmakers.domain.interactor

import fr.androidmakers.domain.PlatformContext
import fr.androidmakers.domain.utils.Constants
import fr.androidmakers.domain.utils.UrlOpener

class OpenXAccountUseCase(
private val urlOpener: UrlOpener
) {
operator fun invoke(platformContext: PlatformContext) {
if (!urlOpener.openUrl(platformContext, Constants.Urls.xAccountApp)) {
urlOpener.openUrl(platformContext, Constants.Urls.xAccountWeb)
class OpenXAccountUseCase() {
operator fun invoke(urlOpener: UrlOpener) {
if (!urlOpener.openUrl(Constants.Urls.xAccountApp)) {
urlOpener.openUrl(Constants.Urls.xAccountWeb)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package fr.androidmakers.domain.interactor

import fr.androidmakers.domain.PlatformContext
import fr.androidmakers.domain.utils.Constants
import fr.androidmakers.domain.utils.UrlOpener

class OpenXHashtagUseCase(
private val urlOpener: UrlOpener
) {
operator fun invoke(platformContext: PlatformContext) {
if (!urlOpener.openUrl(platformContext, Constants.Urls.xHashtagApp)) {
urlOpener.openUrl(platformContext, Constants.Urls.xHashtagWeb)
class OpenXHashtagUseCase() {
operator fun invoke(urlOpener: UrlOpener) {
if (!urlOpener.openUrl(Constants.Urls.xHashtagApp)) {
urlOpener.openUrl(Constants.Urls.xHashtagWeb)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
package fr.androidmakers.domain.interactor

import fr.androidmakers.domain.PlatformContext
import fr.androidmakers.domain.utils.Constants
import fr.androidmakers.domain.utils.UrlOpener

class OpenYoutubeUseCase(
private val urlOpener: UrlOpener
) {
operator fun invoke(platformContext: PlatformContext) {
class OpenYoutubeUseCase() {
operator fun invoke(urlOpener: UrlOpener) {
// Try to open the application first
if (!urlOpener.openUrl(platformContext, Constants.Urls.youtubeApp)) {
urlOpener.openUrl(platformContext, Constants.Urls.youtubeWeb)
if (!urlOpener.openUrl(Constants.Urls.youtubeApp)) {
urlOpener.openUrl(Constants.Urls.youtubeWeb)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import fr.androidmakers.domain.model.Speaker
// TODO to be improved
expect class ShareSessionUseCase {
operator fun invoke(
platformContext: PlatformContext,
context: PlatformContext,
session: Session,
speakers: List<Speaker>,
formattedDateAndRoom: String
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package fr.androidmakers.domain.utils

import fr.androidmakers.domain.PlatformContext

expect class UrlOpener {
fun openUrl(platformContext: PlatformContext, url: String): Boolean
interface UrlOpener {
fun openUrl(url: String): Boolean
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
package fr.androidmakers.domain

actual object PlatformContext
actual abstract class PlatformContext private constructor() {
companion object {
val INSTANCE = object : PlatformContext() {}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,13 @@ package fr.androidmakers.domain.interactor

import fr.androidmakers.domain.PlatformContext
import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.cinterop.NativePtr
import kotlinx.cinterop.cValuesOf
import kotlinx.cinterop.objcPtr
import platform.CoreLocation.CLGeocoder
import platform.CoreLocation.CLLocationCoordinate2D
import platform.CoreLocation.CLLocationCoordinate2DMake
import platform.CoreLocation.CLLocationDegrees
import platform.Foundation.NSLocale
import platform.Foundation.NSNumberFormatter
import platform.Foundation.NSNumberFormatterDecimalStyle
import platform.Foundation.NSNumberFormatterStyle
import platform.MapKit.MKMapItem
import platform.MapKit.MKPlacemark

actual class OpenMapUseCase {
@OptIn(ExperimentalForeignApi::class)
actual operator fun invoke(platformContext: PlatformContext, coordinates: String, name: String) {
actual operator fun invoke(context: PlatformContext, coordinates: String, name: String) {
val coordinateArray = coordinates.split(",")
if (coordinateArray.size == 2) {
val latitude = coordinateArray[0].toDoubleOrNull()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import platform.UIKit.UIApplication

actual class ShareSessionUseCase {
actual operator fun invoke(
platformContext: PlatformContext,
context: PlatformContext,
session: Session,
speakers: List<Speaker>,
formattedDateAndRoom: String
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ actual val defaultPopEnterTransition: EnterTransition = fadeIn() + scaleIn(initi
actual val defaultPopExitTransition: ExitTransition = fadeOut() + scaleOut(targetScale = 0.9f)

@Composable
actual fun getPlatformContext(): PlatformContext = PlatformContext(LocalContext.current)
actual fun getPlatformContext(): PlatformContext = LocalContext.current
Loading