Skip to content

Commit 8526b1c

Browse files
committed
Beta 2
1 parent 3690ca6 commit 8526b1c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1369
-1361
lines changed

.idea/deploymentTargetDropDown.xml

Lines changed: 14 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/release/app-release.apk

893 KB
Binary file not shown.

app/release/output-metadata.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"filters": [],
1313
"attributes": [],
1414
"versionCode": 1,
15-
"versionName": "1.0",
15+
"versionName": "1.0.2",
1616
"outputFile": "app-release.apk"
1717
}
1818
],
Lines changed: 38 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,66 @@
11
package com.troplo.privateuploader
22

3-
import android.app.Activity
4-
import android.content.Intent
53
import android.os.Bundle
6-
import android.os.StrictMode
74
import androidx.activity.ComponentActivity
85
import androidx.activity.compose.setContent
9-
import androidx.activity.result.contract.ActivityResultContracts
10-
import androidx.core.app.ActivityCompat
6+
import androidx.compose.ui.platform.LocalContext
117
import com.troplo.privateuploader.api.SessionManager
128
import com.troplo.privateuploader.api.SocketHandler
139
import com.troplo.privateuploader.api.TpuApi
10+
import com.troplo.privateuploader.api.stores.UserStore
1411
import com.troplo.privateuploader.data.model.User
1512
import com.troplo.privateuploader.ui.theme.PrivateUploaderTheme
16-
import io.socket.client.IO
17-
import kotlinx.coroutines.Dispatchers
18-
import java.util.Collections
1913

2014
class MainActivity : ComponentActivity() {
2115
override fun onCreate(savedInstanceState: Bundle?) {
22-
// if(BuildConfig.DEBUG) StrictMode.enableDefaults();
16+
// if(BuildConfig.DEBUG) StrictMode.enableDefaults();
2317
val token = SessionManager(this).getAuthToken()
24-
var user: User? = null
25-
26-
if(token != null) {
27-
TpuApi.init(token, this)
28-
TpuApi.retrofitService.getUser().enqueue(object : retrofit2.Callback<User> {
29-
override fun onResponse(
30-
call: retrofit2.Call<User>,
31-
response: retrofit2.Response<User>
32-
) {
33-
if (response.body()?.username != null) {
34-
println("User is logged in")
35-
user = response.body()!!
36-
} else {
37-
println("User is not logged in")
38-
}
39-
setContent {
40-
PrivateUploaderTheme {
41-
MainScreen(user)
42-
}
43-
}
44-
}
45-
46-
override fun onFailure(call: retrofit2.Call<User>, t: Throwable) {
47-
println("User is not logged in")
48-
setContent {
49-
PrivateUploaderTheme {
50-
MainScreen(user)
51-
}
52-
}
18+
TpuApi.init(token ?: "", this)
19+
if (token != null) {
20+
SocketHandler.initializeSocket(token, this)
21+
UserStore.initializeUser(this)
22+
}
23+
if (token != null) {
24+
setContent {
25+
PrivateUploaderTheme {
26+
MainScreen()
5327
}
54-
})
28+
}
5529
} else {
5630
TpuApi.init("", this)
5731
setContent {
5832
PrivateUploaderTheme {
59-
MainScreen(user)
33+
MainScreen()
6034
}
6135
}
6236
}
6337
super.onCreate(savedInstanceState)
64-
/*
65-
fun requestPermissions() {
66-
val permissions = arrayOf(
67-
android.Manifest.permission.READ_EXTERNAL_STORAGE,
68-
android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
69-
android.Manifest.permission.CAMERA
70-
)
71-
ActivityCompat.requestPermissions(this, permissions, 0)
72-
}
38+
/*
39+
fun requestPermissions() {
40+
val permissions = arrayOf(
41+
android.Manifest.permission.READ_EXTERNAL_STORAGE,
42+
android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
43+
android.Manifest.permission.CAMERA
44+
)
45+
ActivityCompat.requestPermissions(this, permissions, 0)
46+
}
7347
74-
val resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
75-
if (result.resultCode == Activity.RESULT_OK) {
76-
// There are no request codes
77-
val data: Intent? = result.data
78-
val folder = data?.getStringExtra("folder")
79-
if(folder != null) {
80-
SessionManager(this).setFolder(folder)
48+
val resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
49+
if (result.resultCode == Activity.RESULT_OK) {
50+
// There are no request codes
51+
val data: Intent? = result.data
52+
val folder = data?.getStringExtra("folder")
53+
if(folder != null) {
54+
SessionManager(this).setFolder(folder)
55+
}
56+
}
8157
}
82-
}
83-
}
84-
fun requestFolder() {
85-
requestPermissions()
86-
val intent = Intent(this, MainActivity::class.java)
87-
resultLauncher.launch(intent)
88-
}
89-
requestFolder()*/
58+
fun requestFolder() {
59+
requestPermissions()
60+
val intent = Intent(this, MainActivity::class.java)
61+
resultLauncher.launch(intent)
62+
}
63+
requestFolder()*/
9064
}
9165
}
9266

app/src/main/java/com/troplo/privateuploader/MainScreen.kt

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import androidx.compose.material3.ModalDrawerSheet
1313
import androidx.compose.material3.Scaffold
1414
import androidx.compose.runtime.Composable
1515
import androidx.compose.runtime.LaunchedEffect
16+
import androidx.compose.runtime.collectAsState
1617
import androidx.compose.runtime.getValue
1718
import androidx.compose.runtime.mutableStateOf
1819
import androidx.compose.runtime.remember
@@ -39,13 +40,9 @@ import com.troplo.privateuploader.screens.HomeScreen
3940

4041
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
4142
@Composable
42-
fun MainScreen(user: User?) {
43+
fun MainScreen() {
44+
val user = UserStore.user.collectAsState()
4345
val context = LocalContext.current
44-
val token = SessionManager(context).getAuthToken()
45-
if (token != null) {
46-
SocketHandler.initializeSocket(token, context)
47-
UserStore.initializeUser(context)
48-
}
4946
val navController = rememberNavController()
5047
val panelState = rememberOverlappingPanelsState()
5148
var closePanels by remember { mutableStateOf(false) }
@@ -61,13 +58,19 @@ fun MainScreen(user: User?) {
6158
}
6259
Scaffold(
6360
topBar = {
64-
if(!SocketHandler.connected.value) {
61+
if (!SocketHandler.connected.value) {
6562
ConnectingBanner()
6663
} else {
67-
TopBarNav(navController = navController, user = user)
64+
TopBarNav(navController = navController, user = user.value, panelState = panelState)
6865
}
69-
},
70-
bottomBar = { BottomBarNav(navController = navController, panelState = panelState, closePanels = closePanelsFunc) },
66+
},
67+
bottomBar = {
68+
BottomBarNav(
69+
navController = navController,
70+
panelState = panelState,
71+
closePanels = closePanelsFunc
72+
)
73+
},
7174
) { paddingValues ->
7275
OverlappingPanels(
7376
modifier = Modifier.fillMaxSize(),
@@ -78,15 +81,15 @@ fun MainScreen(user: User?) {
7881
ModalDrawerSheet(
7982
modifier = Modifier.padding(
8083
top = paddingValues.calculateTopPadding(),
81-
bottom = paddingValues.calculateBottomPadding())
84+
bottom = paddingValues.calculateBottomPadding()
85+
)
8286
) {
8387
Spacer(Modifier.height(12.dp))
8488
HomeScreen(
85-
openChat = {
86-
chatId ->
87-
ChatStore.setAssociationId(chatId, context)
88-
navController.navigate("${NavRoute.Chat.path}/$chatId")
89-
closePanels = true
89+
openChat = { chatId ->
90+
ChatStore.setAssociationId(chatId, context)
91+
navController.navigate("${NavRoute.Chat.path}/$chatId")
92+
closePanels = true
9093
},
9194
panelState = panelState
9295
)
@@ -101,7 +104,7 @@ fun MainScreen(user: User?) {
101104
bottom = paddingValues.calculateBottomPadding()
102105
),
103106
navController = navController,
104-
user = user,
107+
user = user.value,
105108
context,
106109
panelsState = panelState
107110
)

app/src/main/java/com/troplo/privateuploader/api/ApiService.kt

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import okhttp3.Interceptor
1818
import okhttp3.OkHttpClient
1919
import okhttp3.Protocol
2020
import okhttp3.Response
21-
import okhttp3.ResponseBody
21+
import okhttp3.ResponseBody.Companion.toResponseBody
2222
import okhttp3.internal.http2.ConnectionShutdownException
2323
import okhttp3.logging.HttpLoggingInterceptor
2424
import org.json.JSONObject
@@ -28,7 +28,6 @@ import retrofit2.converter.gson.GsonConverterFactory
2828
import retrofit2.http.Body
2929
import retrofit2.http.DELETE
3030
import retrofit2.http.GET
31-
import retrofit2.http.PATCH
3231
import retrofit2.http.POST
3332
import retrofit2.http.PUT
3433
import retrofit2.http.Path
@@ -78,7 +77,7 @@ object TpuApi {
7877
.protocol(Protocol.HTTP_2)
7978
.code(999)
8079
.message("Error")
81-
.body(ResponseBody.create(null, "TpuServerError")).build()
80+
.body("TpuServerError".toResponseBody(null)).build()
8281
}
8382

8483
return response
@@ -89,18 +88,23 @@ object TpuApi {
8988
is SocketTimeoutException -> {
9089
msg = "Timeout - Please check your internet connection."
9190
}
91+
9292
is UnknownHostException -> {
9393
msg = "Unable to make a connection. Please check your internet connection."
9494
}
95+
9596
is ConnectionShutdownException -> {
9697
msg = "Connection shutdown. Please check your internet connection."
9798
}
99+
98100
is IOException -> {
99101
msg = "TPU Server is unreachable, please try again later."
100102
}
103+
101104
is IllegalStateException -> {
102105
msg = "${e.message}"
103106
}
107+
104108
else -> {
105109
msg = "${e.message}"
106110
}
@@ -111,7 +115,7 @@ object TpuApi {
111115
.protocol(Protocol.HTTP_2)
112116
.code(999)
113117
.message(msg)
114-
.body(ResponseBody.create(null, "{${e}}")).build()
118+
.body("{${e}}".toResponseBody(null)).build()
115119
}
116120
}
117121

@@ -123,7 +127,7 @@ object TpuApi {
123127
}
124128

125129
private class AuthorizationInterceptor : Interceptor {
126-
override fun intercept(chain: Interceptor.Chain): okhttp3.Response {
130+
override fun intercept(chain: Interceptor.Chain): Response {
127131
val originalRequest = chain.request()
128132
val requestBuilder = originalRequest.newBuilder()
129133
.header("Authorization", token)
@@ -150,35 +154,35 @@ object TpuApi {
150154
@Query("search") search: String = "",
151155
@Query("textMetadata") textMetadata: Boolean = true,
152156
@Query("filter") filter: String = "all",
153-
@Query("sort") sort: String = "\"newest\""
157+
@Query("sort") sort: String = "\"newest\"",
154158
): Call<Gallery>
155159

156160
@GET("chats/{id}/messages")
157161
fun getMessages(
158-
@Path("id") id: Int
162+
@Path("id") id: Int,
159163
): Call<List<Message>>
160164

161165
@POST("chats/{id}/message")
162166
fun sendMessage(
163167
@Path("id") id: Int,
164-
@Body messageRequest: MessageRequest
168+
@Body messageRequest: MessageRequest,
165169
): Call<Message>
166170

167171
@POST("gallery/star/{attachment}")
168172
fun star(
169-
@Path("attachment") attachment: String
173+
@Path("attachment") attachment: String,
170174
): Call<StarResponse>
171175

172176
@PUT("chats/{chatId}/message")
173177
fun editMessage(
174178
@Path("chatId") chatId: Int,
175-
@Body editRequest: EditRequest
179+
@Body editRequest: EditRequest,
176180
): Call<Message>
177181

178182
@DELETE("chats/{chatId}/messages/{messageId}")
179183
fun deleteMessage(
180184
@Path("chatId") chatId: Int,
181-
@Path("messageId") messageId: Int
185+
@Path("messageId") messageId: Int,
182186
): Call<Unit>
183187
}
184188

0 commit comments

Comments
 (0)