Skip to content

Commit cc9e14e

Browse files
url delete feature implemented, with minor fixes
1 parent 55e7e02 commit cc9e14e

File tree

20 files changed

+483
-105
lines changed

20 files changed

+483
-105
lines changed

app/src/main/java/com/github/code/gambit/data/entity/network/UrlNetworkEntity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class UrlNetworkEntity(
2323

2424
@SerializedName("visible")
2525
@Expose
26-
var visible: String,
26+
var visible: Boolean,
2727

2828
@SerializedName("clicks_left")
2929
@Expose

app/src/main/java/com/github/code/gambit/data/mapper/network/UrlNetworkMapper.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ constructor() : EntityMapper<UrlNetworkEntity, Url> {
1515
fileId = entity.pk,
1616
hash = entity.hash,
1717
timestamp = entity.sk.split("#")[1],
18-
visible = entity.visible == "true",
18+
visible = entity.visible,
1919
clicksLeft = entity.clicks_left
2020
)
2121
}
@@ -24,7 +24,7 @@ constructor() : EntityMapper<UrlNetworkEntity, Url> {
2424
return UrlNetworkEntity(
2525
hash = domainModel.hash,
2626
gs1_pk = domainModel.id,
27-
visible = domainModel.visible.toString(),
27+
visible = domainModel.visible,
2828
clicks_left = domainModel.clicksLeft
2929
)
3030
}

app/src/main/java/com/github/code/gambit/data/remote/NetworkDataSource.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ interface NetworkDataSource {
1313

1414
suspend fun getUrls(fileId: String): List<Url>
1515
suspend fun generateUrl(url: Url): Url
16-
suspend fun updateUrl(fileId: String, urlId: String, url: Url): Url
17-
suspend fun deleteUrl(fileId: String, urlId: String): Url
16+
suspend fun updateUrl(url: Url): Url
17+
suspend fun deleteUrl(url: Url): Url
1818

1919
suspend fun getUser(): User
2020
suspend fun updateUser(user: User): User

app/src/main/java/com/github/code/gambit/data/remote/NetworkDataSourceImpl.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,19 @@ class NetworkDataSourceImpl(
4545
}
4646

4747
override suspend fun generateUrl(url: Url): Url {
48-
val id = urlService.generateUrl(url.fileId, urlNetworkMapper.mapToEntity(url))
49-
url.id = id
50-
return url
48+
val networkEntity = urlService.generateUrl(url.fileId, urlNetworkMapper.mapToEntity(url))
49+
return urlNetworkMapper.mapFromEntity(networkEntity)
5150
}
5251

53-
override suspend fun updateUrl(fileId: String, urlId: String, url: Url): Url {
52+
override suspend fun updateUrl(url: Url): Url {
53+
val fileId = url.fileId
54+
val urlId = url.timestamp
5455
return urlNetworkMapper.mapFromEntity(urlService.updateUrl(fileId, urlId, urlNetworkMapper.mapToEntity(url)))
5556
}
5657

57-
override suspend fun deleteUrl(fileId: String, urlId: String): Url {
58+
override suspend fun deleteUrl(url: Url): Url {
59+
val fileId = url.fileId
60+
val urlId = url.timestamp
5861
return urlNetworkMapper.mapFromEntity(urlService.deleteUrl(fileId, urlId))
5962
}
6063

app/src/main/java/com/github/code/gambit/data/remote/services/ApiService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ interface ApiService {
5353
suspend fun getUrls(@Path(AppConstant.API_PATH.FILE_ID) fileId: String): ListResponse<UrlNetworkEntity>
5454

5555
@POST("file/{${AppConstant.API_PATH.FILE_ID}}/url")
56-
suspend fun generateUrl(@Path(AppConstant.API_PATH.FILE_ID) fileId: String, @Body urlNetworkEntity: UrlNetworkEntity): Response<String>
56+
suspend fun generateUrl(@Path(AppConstant.API_PATH.FILE_ID) fileId: String, @Body urlNetworkEntity: UrlNetworkEntity): Response<UrlNetworkEntity>
5757

5858
@PUT("file/{${AppConstant.API_PATH.FILE_ID}}/url/{${AppConstant.API_PATH.URL_ID}}")
5959
suspend fun updateUrl(

app/src/main/java/com/github/code/gambit/data/remote/services/url/UrlService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.github.code.gambit.data.entity.network.UrlNetworkEntity
55
interface UrlService {
66

77
suspend fun getUrls(fileId: String): List<UrlNetworkEntity>
8-
suspend fun generateUrl(fileId: String, urlNetworkEntity: UrlNetworkEntity): String
8+
suspend fun generateUrl(fileId: String, urlNetworkEntity: UrlNetworkEntity): UrlNetworkEntity
99
suspend fun updateUrl(fileId: String, urlId: String, urlNetworkEntity: UrlNetworkEntity): UrlNetworkEntity
1010
suspend fun deleteUrl(fileId: String, urlId: String): UrlNetworkEntity
1111
}

app/src/main/java/com/github/code/gambit/data/remote/services/url/UrlServiceImpl.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.github.code.gambit.data.remote.services.url
33
import com.github.code.gambit.data.entity.network.UrlNetworkEntity
44
import com.github.code.gambit.data.remote.apiRequest
55
import com.github.code.gambit.data.remote.services.ApiService
6+
import com.github.code.gambit.utility.extention.getAbsoluteId
67
import com.github.code.gambit.utility.sharedpreference.LastEvaluatedKeyManager
78

89
class UrlServiceImpl(val apiService: ApiService, private val lekManager: LastEvaluatedKeyManager) : UrlService {
@@ -13,16 +14,16 @@ class UrlServiceImpl(val apiService: ApiService, private val lekManager: LastEva
1314
}
1415
}
1516

16-
override suspend fun generateUrl(fileId: String, urlNetworkEntity: UrlNetworkEntity): String {
17+
override suspend fun generateUrl(fileId: String, urlNetworkEntity: UrlNetworkEntity): UrlNetworkEntity {
1718
val id = fileId.split("#")[1]
1819
return apiRequest { apiService.generateUrl(id, urlNetworkEntity) }
1920
}
2021

2122
override suspend fun updateUrl(fileId: String, urlId: String, urlNetworkEntity: UrlNetworkEntity): UrlNetworkEntity {
22-
return apiRequest { apiService.updateUrl(fileId, urlId, urlNetworkEntity) }
23+
return apiRequest { apiService.updateUrl(fileId.getAbsoluteId(), urlId.getAbsoluteId(), urlNetworkEntity) }
2324
}
2425

2526
override suspend fun deleteUrl(fileId: String, urlId: String): UrlNetworkEntity {
26-
return apiRequest { apiService.deleteUrl(fileId, urlId) }
27+
return apiRequest { apiService.deleteUrl(fileId.getAbsoluteId(), urlId.getAbsoluteId()) }
2728
}
2829
}

app/src/main/java/com/github/code/gambit/repositories/home/HomeRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@ interface HomeRepository {
1414
suspend fun deleteFile(file: File): Flow<ServiceResult<Boolean>>
1515
suspend fun generateUrl(file: File): Flow<ServiceResult<Url>>
1616
suspend fun getUrls(fileId: String): Flow<ServiceResult<List<Url>>>
17+
suspend fun updateUrl(url: Url): Flow<ServiceResult<Url>>
18+
suspend fun deleteUrl(url: Url): Flow<ServiceResult<Url>>
1719
}

app/src/main/java/com/github/code/gambit/repositories/home/HomeRepositoryImpl.kt

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ constructor(
9595
val data: Url
9696
try {
9797
data = networkDataSource.generateUrl(url)
98-
// cacheDataSource.insertUrls(listOf(data))
98+
cacheDataSource.insertUrls(listOf(data))
9999
emit(ServiceResult.Success(data))
100100
} catch (internet: NoInternetException) {
101101
emit(ServiceResult.Error(internet))
@@ -121,4 +121,26 @@ constructor(
121121
}
122122
}
123123
}
124+
125+
override suspend fun updateUrl(url: Url): Flow<ServiceResult<Url>> {
126+
return flow {
127+
try {
128+
val data = networkDataSource.updateUrl(url)
129+
emit(ServiceResult.Success(data))
130+
} catch (exception: Exception) {
131+
emit(ServiceResult.Error(exception))
132+
}
133+
}
134+
}
135+
136+
override suspend fun deleteUrl(url: Url): Flow<ServiceResult<Url>> {
137+
return flow {
138+
try {
139+
val data = networkDataSource.deleteUrl(url)
140+
emit(ServiceResult.Success(data))
141+
} catch (exception: Exception) {
142+
emit(ServiceResult.Error(exception))
143+
}
144+
}
145+
}
124146
}

app/src/main/java/com/github/code/gambit/ui/fragment/home/FileListAdapter.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,25 @@ class FileListAdapter(val context: Context) :
107107
notifyUrlListUpdated(urls[0].fileId)
108108
}
109109

110+
fun updateUrl(url: Url) {
111+
val file = getFile(url)
112+
file?.urls?.find { it.id == url.id }?.apply {
113+
this.clicksLeft = url.clicksLeft
114+
this.visible = url.visible
115+
}
116+
notifyUrlListUpdated(file?.id)
117+
}
118+
119+
fun deleteUrl(url: Url) {
120+
val file = getFile(url)
121+
file?.let {
122+
it.urls.find { it.id == url.id }?.apply {
123+
it.urls.remove(this)
124+
notifyDataSetChanged()
125+
}
126+
}
127+
}
128+
110129
private fun getFile(url: Url) = getDataList.find { it.id == url.fileId }
111130

112131
private fun getUrlAdapter(fileId: String?): UrlListAdapter? = map[fileId]

0 commit comments

Comments
 (0)