Skip to content

Commit

Permalink
Plugged the venues in iOS on the KMP module (#184)
Browse files Browse the repository at this point in the history
  • Loading branch information
enthuan authored Mar 2, 2024
1 parent 4b72848 commit a4a265b
Show file tree
Hide file tree
Showing 24 changed files with 159 additions and 484 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package fr.paug.androidmakers

import android.app.Application
import android.os.Build
import fr.androidmakers.domain.interactor.GetAfterpartyVenueUseCase
import fr.androidmakers.domain.interactor.GetAgendaUseCase
import fr.androidmakers.domain.interactor.GetConferenceVenueUseCase
import fr.androidmakers.domain.repo.PartnersRepository
import fr.androidmakers.domain.repo.RoomsRepository
import fr.androidmakers.domain.repo.SessionsRepository
Expand All @@ -21,11 +23,13 @@ import io.openfeedback.android.OpenFeedback

class AndroidMakersApplication : Application() {
lateinit var getAgendaUseCase: GetAgendaUseCase
lateinit var getConferenceVenueUseCase: GetConferenceVenueUseCase
lateinit var getAfterpartyVenueUseCase: GetAfterpartyVenueUseCase

lateinit var partnersRepository: PartnersRepository
lateinit var roomsRepository: RoomsRepository
lateinit var sessionsRepository: SessionsRepository
lateinit var speakersRepository: SpeakersRepository
lateinit var venueRepository: VenueRepository

lateinit var openFeedback: OpenFeedback

Expand All @@ -44,7 +48,9 @@ class AndroidMakersApplication : Application() {
roomsRepository = RoomsGraphQLRepository(apolloClient)
sessionsRepository = SessionsGraphQLRepository(apolloClient)
speakersRepository = SpeakersGraphQLRepository(apolloClient)
venueRepository = VenueGraphQLRepository(apolloClient)
val venueRepository = VenueGraphQLRepository(apolloClient)
getAfterpartyVenueUseCase = GetAfterpartyVenueUseCase(venueRepository)
getConferenceVenueUseCase = GetConferenceVenueUseCase(venueRepository)
getAgendaUseCase = GetAgendaUseCase(
sessionsRepository = sessionsRepository,
roomsRepository = roomsRepository,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,15 +71,14 @@ fun VenuePager() {
) { page ->
when (page) {
0, 1 -> {
val venueId = if (page == 0) {
"conference"
val venueUc = if (page == 0) {
AndroidMakersApplication.instance().getConferenceVenueUseCase
} else {
"afterparty"
AndroidMakersApplication.instance().getConferenceVenueUseCase
}

val flow = remember {
AndroidMakersApplication.instance().venueRepository.getVenue(venueId)
.map { it.toLce() }
venueUc().map { it.toLce() }
}
val venueState = flow.collectAsState(initial = Lce.Loading)

Expand Down
44 changes: 8 additions & 36 deletions iosApp/RobotConf.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

54 changes: 0 additions & 54 deletions iosApp/RobotConf/Model/Data/DataProvider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ import Apollo

protocol DataProviderProtocol {
var sessionsPublisher: AnyPublisher<[SessionData], Error> { get }
var confVenuePublisher: AnyPublisher<VenueData, Error> { get }
var partyVenuePublisher: AnyPublisher<VenueData, Error> { get }
var votesPublisher: AnyPublisher<[String: TalkFeedback], Error> { get }

func vote(_ proposition: TalkFeedback.Proposition, for talkId: String)
Expand All @@ -30,8 +28,6 @@ class DataProvider {
}

var sessionsPublisher = PassthroughSubject<[Session], Error>()
var confVenuePublisher = PassthroughSubject<Venue, Error>()
var partyVenuePublisher = PassthroughSubject<Venue, Error>()
let votesPublisher: AnyPublisher<[String: TalkFeedback], Error>

private var cancellables: Set<AnyCancellable> = []
Expand All @@ -44,7 +40,6 @@ class DataProvider {
votesPublisher = proxyDataProvider.votesPublisher

computeSessions()
computeVenues()
}

func vote(_ proposition: TalkFeedback.Proposition, for talkId: String) {
Expand Down Expand Up @@ -86,33 +81,6 @@ class DataProvider {
self.sessionsPublisher.send(sessions)
}.store(in: &cancellables)
}

private func computeVenues() {
proxyDataProvider.confVenuePublisher
.sink(receiveCompletion: { error in
print("Error computing conf venue \(error)")
}) { [unowned self] venue in
guard let confVenue = Venue(from: venue) else {
// self.confVenuePublisher.send(completion: .failure())
return
}

self.confVenuePublisher.send(confVenue)
}.store(in: &cancellables)

proxyDataProvider.partyVenuePublisher
.sink(receiveCompletion: { error in
print("Error computing party venue \(error)")
}) { [unowned self] venue in
guard let partyVenue = Venue(from: venue) else {
// self.partyVenuePublisher.send(completion: .failure())
return
}

self.partyVenuePublisher.send(partyVenue)
}.store(in: &cancellables)
}

}

private extension Language {
Expand Down Expand Up @@ -143,28 +111,6 @@ private extension Session.Complexity {
}
}

private extension Venue {
init?(from venue: VenueData) {
let coords = venue.coordinates?.split(separator: ",") ?? []
let formatter = NumberFormatter()
formatter.locale = Locale(identifier: "en_US")
formatter.numberStyle = .decimal
let coordinates: CLLocationCoordinate2D?
if coords.count == 2,
let latitude = formatter.number(from: String(coords[0]))?.doubleValue,
let longitude = formatter.number(from: String(coords[1]))?.doubleValue {
coordinates = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
} else {
coordinates = nil
}
self = Venue(name: venue.name, description: venue.description, descriptionFr: venue.descriptionFr,
address: venue.address,
coordinates: coordinates,
imageUrl: venue.imageUrl)
}
}


private extension TalkFeedback.Proposition {
init?(from voteItem: VoteConfigData.VoteItem, language: String) {
guard voteItem.type == "boolean" else { return nil }
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ public extension GraphQLData {
public static func objectType(forTypename typename: String) -> Object? {
switch typename {
case "Query": return GraphQLData.Objects.Query
case "Venue": return GraphQLData.Objects.Venue
case "Room": return GraphQLData.Objects.Room
case "SessionConnection": return GraphQLData.Objects.SessionConnection
case "Session": return GraphQLData.Objects.Session
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,8 @@ import UIKit

class GraphQLDataProvider: DataProviderProtocol {
let sessionsPublisher: AnyPublisher<[SessionData], Error>
let confVenuePublisher: AnyPublisher<VenueData, Error>
let partyVenuePublisher: AnyPublisher<VenueData, Error>
let votesPublisher: AnyPublisher<[String: TalkFeedback], Error>

private let venuesProvider: GraphQLVenuesProvider
private let sessionsProvider: GraphQLTalksProvider
private let openFeedbackSynchronizer: OpenFeedbackSynchronizer?

Expand Down Expand Up @@ -48,11 +45,6 @@ class GraphQLDataProvider: DataProviderProtocol {
}()

init() {
venuesProvider = GraphQLVenuesProvider(apolloClient: apolloClient)
confVenuePublisher = venuesProvider.confVenuePublisher.eraseToAnyPublisher()
partyVenuePublisher = venuesProvider.partyVenuePublisher.eraseToAnyPublisher()


sessionsProvider = GraphQLTalksProvider(apolloClient: apolloClient)
sessionsPublisher = sessionsProvider.talksPublisher.eraseToAnyPublisher()

Expand Down

This file was deleted.

12 changes: 0 additions & 12 deletions iosApp/RobotConf/Model/Data/Providers/GraphQL/queries.graphql
Original file line number Diff line number Diff line change
@@ -1,15 +1,3 @@
query GetVenues {
venues {
id
name
address
coordinates
description
descriptionFr: description(language: "fr")
imageUrl
}
}

query GetTalks {
rooms {
capacity
Expand Down
Loading

0 comments on commit a4a265b

Please sign in to comment.