diff --git a/tv-app/effecticeTV/app/build.gradle b/tv-app/effecticeTV/app/build.gradle
index 1eda2db6612394d36b1f3c2315988a29a7b88830..f911995027608f305c82e535cac6acf6d637ff90 100644
--- a/tv-app/effecticeTV/app/build.gradle
+++ b/tv-app/effecticeTV/app/build.gradle
@@ -1,7 +1,11 @@
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
+ alias libs.plugins.kotlin.kapt
+ alias libs.plugins.hilt.plug
}
+def localProperties = new Properties()
+localProperties.load(new FileInputStream(rootProject.file("local.properties")))
android {
namespace 'band.effective.office.tv'
@@ -18,6 +22,8 @@ android {
vectorDrawables {
useSupportLibrary true
}
+
+ buildConfigField ("String", "apiLeaderUrl", localProperties['apiLeaderUrl'])
}
buildTypes {
@@ -26,6 +32,7 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
+
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
@@ -62,10 +69,28 @@ dependencies {
debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_ui_version"
//for tv
- implementation "androidx.tv:tv-foundation:1.0.0-alpha04"
- implementation "androidx.tv:tv-material:1.0.0-alpha04"
+ implementation libs.tv
+ implementation libs.tvMaterial
- //Retrofit and Gson
+ //Retrofit
implementation libs.retrofit
- implementation libs.gson
-}
\ No newline at end of file
+ implementation libs.okhttp3
+ implementation libs.okhttp3.logging
+ implementation libs.retrofit.moshi
+
+ // moshi
+ implementation libs.moshi
+ implementation libs.moshi.adapter
+ kapt libs.moshi.gen
+
+ //hilt di
+ implementation libs.hilt
+ implementation libs.hilt.nav
+ kapt libs.hitl.compiller
+
+ //coil
+ implementation libs.coil
+}
+kapt {
+ correctErrorTypes true
+}
diff --git a/tv-app/effecticeTV/app/src/main/AndroidManifest.xml b/tv-app/effecticeTV/app/src/main/AndroidManifest.xml
index cf7dd064044006d78ce5cda1570745fec5d95d26..fededefb12db867fd722c1b9de93ec39a9662111 100644
--- a/tv-app/effecticeTV/app/src/main/AndroidManifest.xml
+++ b/tv-app/effecticeTV/app/src/main/AndroidManifest.xml
@@ -5,6 +5,7 @@
- @GET("api/v4/events/search")
- fun searchEventsByCity(@Query("paginationSize") count: Int, @Query("cityId") cityId: Int): Call
-
-}
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/PhotoJsonDeserializer.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/PhotoJsonDeserializer.kt
deleted file mode 100644
index c2d9b2ee85fca3299712ffc533e701698a75c93f..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/PhotoJsonDeserializer.kt
+++ /dev/null
@@ -1,36 +0,0 @@
-package band.effective.office.tv.leader
-
-import band.effective.office.tv.leader.models.Photo
-import band.effective.office.tv.leader.models.Thumb
-import com.google.gson.*
-import java.lang.reflect.Type
-
-class PhotoJsonDeserializer: JsonDeserializer {
- fun getPhoto( json: JsonObject): Photo = Photo(
- full = json.get("full").asString,
- thumb =
- if (json.has("thumb"))
- Thumb(
- json.get("thumb").asJsonObject.get("180")?.asString ?: "",
- json.get("thumb").asJsonObject.get("360")?.asString ?: "",
- json.get("thumb").asJsonObject.get("520")?.asString ?: "")
- else
- Thumb(
- json.asJsonObject.get("180")?.asString ?: "",
- json.asJsonObject.get("360")?.asString ?: "",
- json.get("520")?.asString ?: ""
- )
- )
-
- override fun deserialize(
- json: JsonElement?,
- typeOfT: Type?,
- context: JsonDeserializationContext?
- ): Photo? =
- if (json!!.isJsonNull) null
- else if(json!!.isJsonArray)
- if (json!!.asJsonArray.size() == 0) null
- else getPhoto(json.asJsonArray.get(0).asJsonObject)
- else if (!json.toString().contains("\"_")) getPhoto(json.asJsonObject)
- else getPhoto(json.asJsonObject.entrySet().toList()[0].value.asJsonObject)
-}
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/SearchResponse.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/SearchResponse.kt
deleted file mode 100644
index 93651d67e88ab90c0a6d5203be3f50180340f17d..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/SearchResponse.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package band.effective.office.tv.leader
-
-import band.effective.office.tv.leader.models.Data
-
-data class SearchResponse(
- val data: Data
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Address.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Address.kt
deleted file mode 100644
index 3dbb680aeca8e2119d27e7adae313b1547e10ba8..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Address.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class Address(
- val id: Int,
- val city_id:Int,
- val region_id: Int,
- val country_id: Int,
- val post_code: Int?,
- val street: String,
- val house:String,
- val building:Int?,
- val wing:String?,
- val apartment: String?,
- val place: String?,
- val geo_point: String,
- val geo_point_zoom:Int,
- val letter:String?,
- val user_id:Int?,
- val city:String,
- val region: String,
- val country: String,
- val title: String,
- val timezone: String?
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Data.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Data.kt
deleted file mode 100644
index ff713a9f5b5f46ace1c7aeda55b568743a842fb7..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Data.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package band.effective.office.tv.leader.models
-
-import com.google.gson.annotations.SerializedName
-
-data class Data(
- @SerializedName("_items")
- val items: List,
- @SerializedName("_meta")
- val meta: Meta
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Event.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Event.kt
deleted file mode 100644
index b29ad4a9bee07cbe66c7dcb001490f677ae13538..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Event.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class Event(
- val id: Int,
- val createdBy: Int,
- val live_public: Boolean,
- val live: List?,
- val stat: Stat,
- val themes: List,
- val type: Type,
- val info: String?, // allways null
- val status: String?,
- val moderation: String,
- val full_info: String,
- val full_name: String,
- val date_start: String,
- val date_end: String,
- val format: String,
- val space: Space,
- val plase: String?, // allways null
- val schedules: List,
- val networking: Networking?,
- val participation_format: String,
- val team_size_min: Int,
- val team_size_max: Int,
- val team_type: String?, // allways null
- val finished: Boolean,
- val afterQuizId: String?,
- val needFeedback: Boolean,
- val hash_tags: List,
- val network_parent_id: Int?,
- val city: String,
- val city_id: Int,
- val halls: List,
- val photo: String,
- val photo_520: String,
- val photo_360: String,
- val photo_180: String,
- val timezone: TimeZone,
- val needStartNotification: Boolean,
- val delivered: Boolean,
- val indexedAt: Int,
- val isFavorite: Boolean
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Hall.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Hall.kt
deleted file mode 100644
index d684f15e486c3bb73c2411910e1539639a9742e2..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Hall.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class Hall(
- val id: Int,
- val name: String,
- val capacity: Int,
- val type:String,
- val square:Int,
- val tags:List,
- val preparePeriod: Int,
- val photos: Photo?,
- val space_id: Int,
- val active: Boolean,
- val deleted_at: String?,
- val deleted_by: String?,
- val description: String,
- val order:Int
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Meta.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Meta.kt
deleted file mode 100644
index 0c013a3e661107d75a2feec1dd7dc14ca419ccca..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Meta.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class Meta(
- val totalCount:Int,
- val pageCount:Int,
- val currentPage:Int,
- val perPage:Int
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Networking.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Networking.kt
deleted file mode 100644
index 63d0e36ef975913bf15734d0fb3423ffdfb22c0b..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Networking.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class Networking(
- val spaceIds: List,
- val broadcast: String
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Participants.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Participants.kt
deleted file mode 100644
index b3310fc972394b5e97115bf9b3d19d9f3e9ee2a6..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Participants.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class Participants(
- val count: Int,
- val list: List
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Persons.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Persons.kt
deleted file mode 100644
index e9654dc1c71efd362f78bfb574a39e66c5b1b293..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Persons.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class Persons(
- val id:Int,
- val name: String,
- val photo: String?
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Photo.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Photo.kt
deleted file mode 100644
index 47c4a756ca5ab49058245966e024c9e3ba266e9f..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Photo.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class Photo(
- val full: String,
- val thumb: Thumb
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/PhotoUrl.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/PhotoUrl.kt
deleted file mode 100644
index ebc631a40a14cf52fe7b3852505bded889177c2d..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/PhotoUrl.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class PhotoUrl(
- val url: String
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Schedul.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Schedul.kt
deleted file mode 100644
index 7fa2122f322d7abaf90be4345e522fdc5c8225c8..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Schedul.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package band.effective.office.tv.leader.models
-
-import band.effective.office.tv.leader.models.Hall
-
-data class Schedul(
- val hallId: Int?,
- val name: String,
- val description: String?,
- val speaker: String,
- val area: String?,
- val dateStart: String,
- val dateEnd: String,
- val hall: Hall?
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/SocialNetwork.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/SocialNetwork.kt
deleted file mode 100644
index c5fbef26fa00fc3b776413b1cadc71894bf07a9c..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/SocialNetwork.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class SocialNetwork(
- val url: String,
- val alias: String
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Space.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Space.kt
deleted file mode 100644
index d5ecfa4fb86068e655541d48594ec892803834bf..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Space.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class Space(
- val id: Int,
- val phone: String,
- val phoneExtension: String?, // allways null
- val addressId: Int,
- val active: Boolean,
- val kworkingState: String?, // allways null
- val agenda: List,
- val square:Double,
- val email: String,
- val name: String,
- val description: String,
- val rating: String?, // allways null
- val type:String,
- val minimalPeriod: Int,
- val photos: List,
- val tags: List,
- val socialNetworks: List,
- val scheduleOnRequest: Boolean,
- val stat: SpaceStat,
- val createdAt: String,
- val updatedAt: String,
- val restrictEventOwnerOfflineConfirm: Boolean,
- val address: Address
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/SpaceStat.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/SpaceStat.kt
deleted file mode 100644
index e4f98ec941607d744f4d37c399e448747c87b176..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/SpaceStat.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class SpaceStat(
- val participantCount: Int,
- val active_participants: Int,
- val uniqueUsers: Int,
- val participantAverage: Int,
- val regionScope: Int,
- val monthEventCount: Int,
- val ntiPercent: Double,
- val moderationTime: String
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Stat.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Stat.kt
deleted file mode 100644
index 48dca509a618434546f8f3d35f167b1d06e5a5f7..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Stat.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package band.effective.office.tv.leader.models
-
-import band.effective.office.tv.leader.models.Participants
-
-data class Stat(
- val participants: Participants
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Theme.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Theme.kt
deleted file mode 100644
index 9832973bdafe127c5983f4fbf2e311ed4f2ccc80..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Theme.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package band.effective.office.tv.leader.models
-
-import band.effective.office.tv.leader.models.Photo
-import band.effective.office.tv.leader.models.PhotoUrl
-
-data class Theme(
- val id: Int,
- val name: String,
- val visible: Boolean,
- val updated_at: String?,
- val createdBy: Int,
- val priority: Int,
- val status: Int,
- val keywords: List,
- val photos: Photo?,
- val old_type: String?,
- val gid: Int,
- val code: String?,
- val parentId: Int?, // allways null
- val childCount: Int,
- val moderatedBy: Int?,
- val moderatedAt: String?,
- val photo: PhotoUrl
-)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Thumb.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Thumb.kt
deleted file mode 100644
index 2a58ec7031535252ece09a9f92ec5fd277491a15..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Thumb.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package band.effective.office.tv.leader.models
-
-import com.google.gson.annotations.SerializedName
-
-data class Thumb(
- @SerializedName("180")
- val p180: String,
- @SerializedName("360")
- val p360: String,
- @SerializedName("520")
- val p520: String
-
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/TimeZone.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/TimeZone.kt
deleted file mode 100644
index e5573ded72b17633f7deb1debd546ed813aa5d85..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/TimeZone.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class TimeZone(
- val value: String,
- val minutes: Int
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Type.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Type.kt
deleted file mode 100644
index 1b0a7ebb586ba7be1b675c8249b2e20012d8333e..0000000000000000000000000000000000000000
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/leader/models/Type.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package band.effective.office.tv.leader.models
-
-data class Type(
- val id: Int,
- val name: String
-)
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/ClientsAnnotation.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/ClientsAnnotation.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f72d26f152be19f65a5a888eb9ed92a723c380f5
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/ClientsAnnotation.kt
@@ -0,0 +1,13 @@
+package band.effective.office.tv.network
+
+import javax.inject.Qualifier
+
+
+//this annotations for retrofit
+@Qualifier
+@Retention(AnnotationRetention.BINARY)
+annotation class LeaderIdRetrofitClient
+
+@Qualifier
+@Retention(AnnotationRetention.BINARY)
+annotation class SynologyRetrofitClient
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/LeaderApi.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/LeaderApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..507da763d71e1d26da9a2627d69e5bfb1255026f
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/LeaderApi.kt
@@ -0,0 +1,15 @@
+package band.effective.office.tv.network.leader
+
+import band.effective.office.tv.network.leader.models.EventInfo.EventInfoResponse
+import band.effective.office.tv.network.leader.models.SearchEvent.SearchEventsResponse
+import retrofit2.Call
+import retrofit2.http.GET
+import retrofit2.http.Path
+import retrofit2.http.Query
+
+interface LeaderApi {
+ @GET("api/v4/events/search")
+ fun searchEvents(@Query("paginationSize") count: Int, @Query("cityId") cityId: Int, @Query("placeIds[]") placeId: Int): Call
+ @GET("api/v4/events/{eventId}")
+ fun eventInfo(@Path("eventId") eventId: Int): Call
+}
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/AddressX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/AddressX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..92e33fb70c8cec0a46275552b14f38ef2ace4cb8
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/AddressX.kt
@@ -0,0 +1,34 @@
+package band.effective.office.tv.network.leader.models
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class AddressX(
+ val apartment: Any?,
+ val building: Any?,
+ val city: String?,
+ @Json(name = "city_id")
+ val cityId: Int?,
+ val country: String?,
+ @Json(name = "country_id")
+ val countryId: Int?,
+ @Json(name = "geo_point")
+ val geoPoint: String?,
+ @Json(name = "geo_point_zoom")
+ val geoPoint_zoom: String?,
+ val house: String?,
+ val id: Int?,
+ val letter: Any?,
+ val place: Any?,
+ val postCode: Any?,
+ val region: String?,
+ @Json(name = "region_id")
+ val regionId: Int?,
+ val street: String?,
+ val timezone: Any?,
+ val title: String?,
+ @Json(name = "user_id")
+ val userId: Any?,
+ val wing: Any?
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/Data.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/Data.kt
new file mode 100644
index 0000000000000000000000000000000000000000..50947cac6f94ec76863103ae008b75698a44bfc6
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/Data.kt
@@ -0,0 +1,82 @@
+package band.effective.office.tv.network.leader.models.EventInfo
+
+import band.effective.office.tv.network.leader.models.*
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class Data(
+ val access: String,
+ val address: AddressX,
+ val afterQuizId: Any?,
+ val certificate: Boolean,
+ val certificate_text: Any?,
+ val city: String,
+ @Json(name = "city_id")
+ val cityId: Int,
+ val createdBy: Int,
+ @Json(name = "date_end")
+ val dateEnd: String,
+ @Json(name = "date_start")
+ val dateStart: String,
+ val documents: List,
+ val ecpRequired: Boolean,
+ val expectedParticipantCount: Any?,
+ val finished: Boolean,
+ val format: String,
+ @Json(name = "full_info")
+ val fullInfo: String,
+ @Json(name = "full_name")
+ val fullName: String,
+ val halls: List,
+ @Json(name = "hash_tags")
+ val hashTags: List,
+ val hosts: List,
+ val id: Int,
+ val info: Any?,
+ @Json(name = "is_competition")
+ val isCompetition: Boolean,
+ val live: Any?,
+ @Json(name = "live_public")
+ val livePublic: Boolean,
+ val media: Any?,
+ val moderation: String,
+ val needFeedback: Boolean,
+ val needStartNotification: Boolean,
+ val networkProposals: List,
+ @Json(name = "network_parent_id")
+ val networkParentId: Any?,
+ val networking: Any?,
+ val organizers: List,
+ @Json(name = "participation_format")
+ val participationFormat: String,
+ val partners: List,
+ val photo: String,
+ @Json(name = "photo_180")
+ val photo180: String,
+ @Json(name = "photo_360")
+ val photo360: String,
+ @Json(name = "photo_520")
+ val photo520: String,
+ val place: Any?,
+ val quizId: Any?,
+ @Json(name = "registration_date_end")
+ val registrationDateEnd: String,
+ @Json(name = "registration_date_start")
+ val registrationDateStart: String,
+ val schedules: List,
+ val similar: List,
+ val space: SpaceX,
+ val speakers: List,
+ val stat: StatX,
+ val status: String,
+ @Json(name = "team_size_max")
+ val teamSizeMax: Any?,
+ @Json(name = "team_size_min")
+ val teamSizeMin: Any?,
+ @Json(name = "team_type")
+ val teamType: Any?,
+ val themes: List,
+ val timezone: TimezoneX,
+ val type: TypeX
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/EventInfoResponse.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/EventInfoResponse.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f284a80f2eff49898638a0a82b0fb3a070451e96
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/EventInfoResponse.kt
@@ -0,0 +1,8 @@
+package band.effective.office.tv.network.leader.models.EventInfo
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class EventInfoResponse(
+ val data: Data
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/Organizer.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/Organizer.kt
new file mode 100644
index 0000000000000000000000000000000000000000..4067b59bda03101a355e20f671c6b58b5572536b
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/Organizer.kt
@@ -0,0 +1,27 @@
+package band.effective.office.tv.network.leader.models.EventInfo
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class Organizer(
+ val company: Any?,
+ val companyId: Any?,
+ val email: String,
+ val id: Int,
+ val internationalPhone: Boolean,
+ val name: String,
+ val phone: String,
+ val photo: String,
+ @Json(name = "photo_180")
+ val photo180: String,
+ @Json(name = "photo_360")
+ val photo360: String,
+ @Json(name = "photo_520")
+ val photo520: String,
+ val photos: Any?,
+ val position: String,
+ val telegram: Any?,
+ val url: Any?,
+ val userId: Int
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/Similar.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/Similar.kt
new file mode 100644
index 0000000000000000000000000000000000000000..51a463f0339df6deadf5f1886cad8a581cc5a88f
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/Similar.kt
@@ -0,0 +1,17 @@
+package band.effective.office.tv.network.leader.models.EventInfo
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class Similar(
+ val city: Any?,
+ @Json(name = "date_end")
+ val date_end: String,
+ @Json(name = "date_start")
+ val date_start: String,
+ @Json(name = "full_name")
+ val full_name: String,
+ val id: Int,
+ val photo: String
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/Speaker.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/Speaker.kt
new file mode 100644
index 0000000000000000000000000000000000000000..aaf0129035a810f1f2d699bf47932dcbf596b83f
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/Speaker.kt
@@ -0,0 +1,42 @@
+package band.effective.office.tv.network.leader.models.EventInfo
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class Speaker(
+ val completed: Boolean,
+ @Json(name = "completed_at")
+ val completedAt: Any?,
+ @Json(name = "control_passed")
+ val controlPassed: Any?,
+ @Json(name = "created_at")
+ val createdAt: String,
+ @Json(name = "event_id")
+ val eventId: Int,
+ val format: Any?,
+ val id: String,
+ val moderation: String,
+ @Json(name = "number_participants")
+ val numberParticipants: Any?,
+ @Json(name = "quiz_answer_id")
+ val quizAnswer_id: Any?,
+ @Json(name = "rejected_by")
+ val rejectedBy: Any?,
+ val role: String,
+ @Json(name = "role_id")
+ val roleId: Int,
+ @Json(name = "")
+ val spaceId: Any?,
+ val status: Int,
+ @Json(name = "team_id")
+ val teamId: Any?,
+ @Json(name = "updated_at")
+ val updatedAt: Any?,
+ val user: User,
+ @Json(name = "user_id")
+ val userId: Int,
+ val visible: Boolean,
+ @Json(name = "w_group_ids")
+ val wGroupIds: Any?
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/User.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/User.kt
new file mode 100644
index 0000000000000000000000000000000000000000..9960954864b11f64db03da0115f52aaa8c13ef97
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/EventInfo/User.kt
@@ -0,0 +1,20 @@
+package band.effective.office.tv.network.leader.models.EventInfo
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class User(
+ val email: Any?,
+ val employment: Any?,
+ val employments: List,
+ @Json(name = "father_name")
+ val fatherName: String,
+ @Json(name = "first_name")
+ val firstName: String,
+ val id: Int,
+ @Json(name = "last_name")
+ val lastName: String,
+ val phone: Any?,
+ val photo: Any?
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/HallX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/HallX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..9277eb3c34b95fb8787c2cd4358ca7aa5066a714
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/HallX.kt
@@ -0,0 +1,16 @@
+package band.effective.office.tv.network.leader.models
+
+import band.effective.office.tv.network.leader.models.SearchEvent.PhotoX
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class HallX(
+ val capacity: Int?,
+ val id: Int?,
+ val name: String?,
+ val photos: List,
+ val preparePeriod: Int?,
+ val square: String?,
+ val tags: List?,
+ val type: String?
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/DataX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/DataX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..51e29597a3bda4c7bf7469dafa0edf26cf9659d9
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/DataX.kt
@@ -0,0 +1,12 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class DataX(
+ @Json(name = "_items")
+ val items: List- ,
+ @Json(name = "_meta")
+ val meta: MetaX?
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/Item.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/Item.kt
new file mode 100644
index 0000000000000000000000000000000000000000..de0e1a2e466d7f49e5a28bf8022bd5b5e2483500
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/Item.kt
@@ -0,0 +1,64 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import band.effective.office.tv.network.leader.models.*
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class Item(
+ val afterQuizId: Any?,
+ val city: String,
+ @Json(name = "city_id")
+ val cityId: Int,
+ val createdBy: Int,
+ @Json(name = "date_end")
+ val dateEnd: String,
+ @Json(name = "date_start")
+ val dateStart: String,
+ val delivered: Boolean,
+ val finished: Boolean,
+ val format: String,
+ @Json(name = "full_info")
+ val fullInfo: String,
+ @Json(name = "full_name")
+ val fullName: String,
+ val halls: List,
+ @Json(name = "hash_tags")
+ val hashTags: List,
+ val id: Int,
+ val indexedAt: Int,
+ val info: Any?,
+ val isFavorite: Boolean,
+ val live: Any?,
+ @Json(name = "live_public")
+ val livePublic: Boolean,
+ val moderation: String,
+ val needFeedback: Boolean,
+ val needStartNotification: Boolean,
+ @Json(name = "network_parent_id")
+ val networkParentId: Any?,
+ val networking: Any?,
+ @Json(name = "participation_format")
+ val participationFormat: String,
+ val photo: String,
+ @Json(name = "photo_180")
+ val photo180: String,
+ @Json(name = "photo_360")
+ val photo360: String,
+ @Json(name = "photo_520")
+ val photo520: String,
+ val place: Any?,
+ val schedules: List,
+ val space: SpaceX,
+ val stat: StatXX,
+ val status: String,
+ @Json(name = "team_size_max")
+ val teamSizeMax: Any?,
+ @Json(name = "team_size_min")
+ val teamSizeMin: Any?,
+ @Json(name = "team_type")
+ val teamType: Any?,
+ val themes: List,
+ val timezone: TimezoneX?,
+ val type: TypeX
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/MetaX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/MetaX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2b82311c4822bd842718255eca37e2d0b773142c
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/MetaX.kt
@@ -0,0 +1,11 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class MetaX(
+ val currentPage: Int,
+ val pageCount: Int,
+ val perPage: Int,
+ val totalCount: Int
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/ParticipantsItem.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/ParticipantsItem.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2ea5fab3ae83a18ac3f29606c1212afc3f9c5836
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/ParticipantsItem.kt
@@ -0,0 +1,10 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class ParticipantsItem(
+ val id: Int,
+ val name: String,
+ val photo: Any?
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/ParticipantsX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/ParticipantsX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..4d483905a8b0eb148c69777bf8c93d50e028ace0
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/ParticipantsX.kt
@@ -0,0 +1,9 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class ParticipantsX(
+ val count: Int,
+ val list: List
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/PhotoX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/PhotoX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e1c0d9b76559b59e43d9d1e678803d57c9846215
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/PhotoX.kt
@@ -0,0 +1,9 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class PhotoX(
+ val full: String,
+ val thumb: ThumbX
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/PhotoXX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/PhotoXX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..13f8d7f8779445e2f9dd679e4d8f92ff60200399
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/PhotoXX.kt
@@ -0,0 +1,9 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class PhotoXX(
+ val full: String,
+ val thumb: ThumbXX
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/PhotoXXX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/PhotoXXX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f95ec9b5b4d10288cd6e70fca21639ea43cff1ab
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/PhotoXXX.kt
@@ -0,0 +1,8 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class PhotoXXX(
+ val url: String?
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/Photos.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/Photos.kt
new file mode 100644
index 0000000000000000000000000000000000000000..c85f65cfa9094fa7dc68c7ce679168ca6716bddc
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/Photos.kt
@@ -0,0 +1,8 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class Photos(
+ val full: String
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/SearchEventsResponse.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/SearchEventsResponse.kt
new file mode 100644
index 0000000000000000000000000000000000000000..c9e0c163ae879c36964e69d933b8c0414481ca03
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/SearchEventsResponse.kt
@@ -0,0 +1,8 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class SearchEventsResponse(
+ val data: DataX
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/SocialNetworkX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/SocialNetworkX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..08d1a9f04ce3e510264a49b632ccc10c7d8de0dd
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/SocialNetworkX.kt
@@ -0,0 +1,9 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class SocialNetworkX(
+ val alias: String,
+ val url: String
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/StatXX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/StatXX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..be486d2d147448922ca7e6dc15485b7a4f597b1a
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/StatXX.kt
@@ -0,0 +1,8 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class StatXX(
+ val participants: ParticipantsX
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/ThumbX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/ThumbX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..63bb176ec35f25702ea9927a7e8adf398fcdd32a
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/ThumbX.kt
@@ -0,0 +1,12 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class ThumbX(
+ @Json(name = "360")
+ val size360: String,
+ @Json(name = "520")
+ val size520: String
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/ThumbXX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/ThumbXX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e0229eef9c4ead7527c7b02620740c57c545c77e
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SearchEvent/ThumbXX.kt
@@ -0,0 +1,14 @@
+package band.effective.office.tv.network.leader.models.SearchEvent
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class ThumbXX(
+ @Json(name = "180")
+ val size180: String,
+ @Json(name = "360")
+ val size360: String,
+ @Json(name = "520")
+ val size520: String
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SpaceX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SpaceX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..91483357fdafc8aa7fa3a9105cd9c07904d1bf73
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/SpaceX.kt
@@ -0,0 +1,32 @@
+package band.effective.office.tv.network.leader.models
+
+import band.effective.office.tv.network.leader.models.SearchEvent.PhotoXX
+import band.effective.office.tv.network.leader.models.SearchEvent.SocialNetworkX
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class SpaceX(
+ val active: Boolean,
+ val address: AddressX,
+ val addressId: Int,
+ val agenda: List,
+ val createdAt: String,
+ val description: String,
+ val email: String,
+ val id: Int,
+ val kworkingState: Any?,
+ val minimalPeriod: Int,
+ val name: String,
+ val phone: String,
+ val phoneExtension: Any?,
+ val photos: List,
+ val rating: Any?,
+ val restrictEventOwnerOfflineConfirm: Boolean,
+ val scheduleOnRequest: Boolean,
+ val socialNetworks: List,
+ val square: String,
+ val stat: StatX,
+ val tags: List,
+ val type: String,
+ val updatedAt: String
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/StatX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/StatX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..63359e1c2f9338add952d6e9ca4221dc714ca727
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/StatX.kt
@@ -0,0 +1,18 @@
+package band.effective.office.tv.network.leader.models
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class StatX(
+ @Json(name = "active_participants")
+ val activeParticipants: Int = 0,
+ val moderationTime: String = "",
+ val monthEventCount: Int = 0,
+ val ntiPercent: Double = 0.0,
+ val participantAverage: String = "",
+ val participantCount: Int = 0,
+ val regionScope: Int = 0,
+ val uniqueUsers: Int = 0
+)
+
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/ThemeX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/ThemeX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..15e3a037015929dff271eba0b824e6055beea997
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/ThemeX.kt
@@ -0,0 +1,28 @@
+package band.effective.office.tv.network.leader.models
+
+import band.effective.office.tv.network.leader.models.SearchEvent.PhotoXXX
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class ThemeX(
+ val childCount: Int,
+ val code: Any?,
+ val createdBy: Int,
+ val gid: Int,
+ val id: Int,
+ val keywords: List,
+ val moderatedAt: Any?,
+ val moderatedBy: Any?,
+ val name: String,
+ @Json(name = "old_type")
+ val oldType: String?,
+ val parentId: Int?,
+ val photo: PhotoXXX,
+ val photos: Any?,
+ val priority: Int,
+ val status: Int,
+ @Json(name = "updated_at")
+ val updatedAt: String?,
+ val visible: Boolean
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/TimezoneX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/TimezoneX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ce22db62da868bb54915fbd3596da6a884157aca
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/TimezoneX.kt
@@ -0,0 +1,9 @@
+package band.effective.office.tv.network.leader.models
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class TimezoneX(
+ val minutes: Int,
+ val value: String
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/TypeX.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/TypeX.kt
new file mode 100644
index 0000000000000000000000000000000000000000..96db5ded2ee4aa4c76698bf5449160985f6add0f
--- /dev/null
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/network/leader/models/TypeX.kt
@@ -0,0 +1,9 @@
+package band.effective.office.tv.network.leader.models
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class TypeX(
+ val id: Int,
+ val name: String
+)
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/view/ListView.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/view/ListView.kt
index d2c22a1353e9753bf480a678e00f61495bdeaeda..dc4e88833ba990ae4b8dd308005d8a9fb081b18d 100644
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/view/ListView.kt
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/view/ListView.kt
@@ -4,17 +4,28 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
+import androidx.compose.ui.platform.LocalContext
+import androidx.hilt.navigation.compose.hiltViewModel
import androidx.tv.material3.Text
+import coil.compose.AsyncImage
+import coil.request.ImageRequest
@Composable
-fun ListView(viewModel: ListViewModel){
+fun ListView(viewModel: ListViewModel = hiltViewModel()){
val response by viewModel.apiResponse.collectAsState()
if (response!=null){
LazyColumn(){
items(7){i ->
val item = response!!.data.items[i]
- Text(item.full_name)
+ Text(item.fullName)
Text(item.format)
+ AsyncImage(
+ model = ImageRequest.Builder(LocalContext.current)
+ .data(item.photo)
+ .crossfade(true)
+ .build(),
+ contentDescription = item.fullName
+ )
}
}
}
diff --git a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/view/ListViewModel.kt b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/view/ListViewModel.kt
index c5b93fe5e73df6e488d2834957843aea19bc4f6a..2ad430bd323fd5a3c871516d70d3cf4cd5daf65f 100644
--- a/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/view/ListViewModel.kt
+++ b/tv-app/effecticeTV/app/src/main/java/band/effective/office/tv/view/ListViewModel.kt
@@ -1,33 +1,24 @@
package band.effective.office.tv.view
-import band.effective.office.tv.leader.models.Photo
-import band.effective.office.tv.leader.LeaderApi
-import band.effective.office.tv.leader.PhotoJsonDeserializer
-import band.effective.office.tv.leader.SearchResponse
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.google.gson.GsonBuilder
+import band.effective.office.tv.network.leader.LeaderApi
+import band.effective.office.tv.network.leader.models.SearchEvent.SearchEventsResponse
+import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
-import retrofit2.Retrofit
-import retrofit2.converter.gson.GsonConverterFactory
+import javax.inject.Inject
-class ListViewModel: ViewModel() {
- private var mutableApiResponse = MutableStateFlow((null))
+@HiltViewModel
+class ListViewModel @Inject constructor (val api: LeaderApi): ViewModel() {
+ private var mutableApiResponse = MutableStateFlow(null)
val apiResponse = mutableApiResponse.asStateFlow()
init {
viewModelScope.launch(Dispatchers.IO) {
- val builder = GsonBuilder()
- builder.registerTypeAdapter(Photo::class.java, PhotoJsonDeserializer())
- val retrofit = Retrofit.Builder()
- .baseUrl("https://leader-id.ru/")
- .addConverterFactory(GsonConverterFactory.create(builder.create()))
- .build();
- val api = retrofit.create(LeaderApi::class.java)
- mutableApiResponse.update { api.searchEvents(10,3942).execute().body() }
+ mutableApiResponse.update { api.searchEvents(10,893,3942).execute().body() }
}
}
}
\ No newline at end of file
diff --git a/tv-app/effecticeTV/app/tvconfig.gradle b/tv-app/effecticeTV/app/tvconfig.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..6ca438b9a22e92d3011afb17d30740f95a3bcb75
--- /dev/null
+++ b/tv-app/effecticeTV/app/tvconfig.gradle
@@ -0,0 +1 @@
+buildConfigField "String", "apiLeaderUrl", "\"https://leader-id.ru/\""
\ No newline at end of file
diff --git a/tv-app/effecticeTV/build.gradle b/tv-app/effecticeTV/build.gradle
index 36db330c3fb9bc3cb85d811f95c2210258ea2e33..0410023a0dda6ec562cc76fdcefd7bf6bdfa7f51 100644
--- a/tv-app/effecticeTV/build.gradle
+++ b/tv-app/effecticeTV/build.gradle
@@ -7,4 +7,6 @@ plugins {
id 'com.android.application' version '7.4.2' apply false
id 'com.android.library' version '7.4.2' apply false
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
+ alias libs.plugins.kotlin.kapt apply false
+ alias libs.plugins.hilt.plug apply false
}
\ No newline at end of file
diff --git a/tv-app/effecticeTV/gradle/libs.versions.toml b/tv-app/effecticeTV/gradle/libs.versions.toml
index d29cfab1213a1578cc5c2361016573660af92dd1..fd9c464084cb26a95f623f84676aeaed35f9bc7e 100644
--- a/tv-app/effecticeTV/gradle/libs.versions.toml
+++ b/tv-app/effecticeTV/gradle/libs.versions.toml
@@ -1,7 +1,30 @@
[versions]
retrofit-ver = "2.9.0"
-converter-gson-ver = "2.5.0"
+tv-ver="1.0.0-alpha04"
+moshi-ver="1.14.0"
+hilt-var = "2.44"
+hilt-nav-var = "1.0.0"
+kotlin = "1.8.0"
+okhttp3-var = "4.10.0"
+retrofit-moshi = "2.9.0"
+coil-ver = "2.2.2"
[libraries]
retrofit = {module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit-ver"}
-gson = {module = "com.squareup.retrofit2:converter-gson", version.ref = "converter-gson-ver"}
\ No newline at end of file
+moshi = {module = "com.squareup.moshi:moshi", version.ref = "moshi-ver"}
+moshi-adapter = {module = "com.squareup.moshi:moshi-adapters", version.ref = "moshi-ver"}
+tv = {module = "androidx.tv:tv-foundation", version.ref = "tv-ver"}
+tvMaterial = {module = "androidx.tv:tv-material", version.ref = "tv-ver"}
+hilt = {module = "com.google.dagger:hilt-android", version.ref = "hilt-var"}
+hilt-nav = {module = "androidx.hilt:hilt-navigation-compose", version.ref = "hilt-nav-var"}
+hitl-compiller = {module = "com.google.dagger:hilt-compiler", version.ref = "hilt-var"}
+okhttp3 = {module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp3-var"}
+okhttp3-logging = {module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp3-var"}
+retrofit-moshi = {module = "com.squareup.retrofit2:converter-moshi", version.ref = "retrofit-moshi"}
+moshi-gen = {module = "com.squareup.moshi:moshi-kotlin-codegen", version.ref = "moshi-ver"}
+coil = {module = "io.coil-kt:coil-compose", version.ref = "coil-ver"}
+
+
+[plugins]
+kotlin-kapt = {id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin"}
+hilt-plug = {id = "com.google.dagger.hilt.android", version.ref = "hilt-var"}