fixed network timeout and started working on final marks
This commit is contained in:
Generated
+2
-1
@@ -1,6 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|||||||
@@ -199,8 +199,10 @@ enum class ScreenElement {
|
|||||||
class Global {
|
class Global {
|
||||||
lateinit var timetableJSON: JSONObject
|
lateinit var timetableJSON: JSONObject
|
||||||
lateinit var marksJSON: JSONObject
|
lateinit var marksJSON: JSONObject
|
||||||
|
lateinit var finalMarksJSON: JSONObject
|
||||||
lateinit var marks: MutableMap<String, MutableList<Mark>>
|
lateinit var marks: MutableMap<String, MutableList<Mark>>
|
||||||
lateinit var newMarks: MutableMap<String, MutableList<Mark>>
|
lateinit var newMarks: MutableMap<String, MutableList<Mark>>
|
||||||
|
lateinit var finalMarks: Map<String, Int>
|
||||||
lateinit var settings: SettingsData
|
lateinit var settings: SettingsData
|
||||||
lateinit var fileDir: File
|
lateinit var fileDir: File
|
||||||
|
|
||||||
@@ -244,6 +246,7 @@ class Global {
|
|||||||
val marks: String = "marks.json"
|
val marks: String = "marks.json"
|
||||||
val settings: String = "settings.txt"
|
val settings: String = "settings.txt"
|
||||||
val lectureNotes: String = "lecture_notes.csv"
|
val lectureNotes: String = "lecture_notes.csv"
|
||||||
|
val finalMarks: String = "final_marks.txt"
|
||||||
}
|
}
|
||||||
val filePaths = FilePaths()
|
val filePaths = FilePaths()
|
||||||
|
|
||||||
@@ -253,6 +256,7 @@ class Global {
|
|||||||
val userData = "$apiBase/v1/user"
|
val userData = "$apiBase/v1/user"
|
||||||
val timetable = "$apiBase/v1/timeTable"
|
val timetable = "$apiBase/v1/timeTable"
|
||||||
var marks: String = "$apiBase/v1/students/<student id>/marks/list"
|
var marks: String = "$apiBase/v1/students/<student id>/marks/list"
|
||||||
|
var finalMarks: String ="$apiBase/v1/students/<student id>/marks/final"
|
||||||
}
|
}
|
||||||
val apiEndPoints = APIEndPoints()
|
val apiEndPoints = APIEndPoints()
|
||||||
|
|
||||||
|
|||||||
@@ -34,15 +34,18 @@ fun remoteLoad(ctx: Context) {
|
|||||||
// fetch remote data
|
// fetch remote data
|
||||||
global.timetableJSON = networkRequestFactory.perform(NetworkRequestType.Timetable)
|
global.timetableJSON = networkRequestFactory.perform(NetworkRequestType.Timetable)
|
||||||
global.marksJSON = networkRequestFactory.perform(NetworkRequestType.Marks)
|
global.marksJSON = networkRequestFactory.perform(NetworkRequestType.Marks)
|
||||||
|
global.finalMarksJSON = networkRequestFactory.perform(NetworkRequestType.FinalMarks)
|
||||||
|
|
||||||
// save to local for later local load
|
// save to local for later local load
|
||||||
Util.saveStringToFile(global.filePaths.timetable, global.timetableJSON.toString())
|
Util.saveStringToFile(global.filePaths.timetable, global.timetableJSON.toString())
|
||||||
Util.saveStringToFile(global.filePaths.marks, global.marksJSON.toString())
|
Util.saveStringToFile(global.filePaths.marks, global.marksJSON.toString())
|
||||||
|
Util.saveStringToFile(global.filePaths.finalMarks, global.finalMarksJSON.toString())
|
||||||
|
|
||||||
launchContinue(
|
launchContinue(
|
||||||
ctx,
|
ctx,
|
||||||
global.timetableJSON,
|
global.timetableJSON,
|
||||||
global.marksJSON
|
global.marksJSON,
|
||||||
|
global.finalMarksJSON
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -50,7 +53,8 @@ fun remoteLoad(ctx: Context) {
|
|||||||
launchContinue(
|
launchContinue(
|
||||||
ctx,
|
ctx,
|
||||||
networkRequestFactory.perform(NetworkRequestType.Timetable),
|
networkRequestFactory.perform(NetworkRequestType.Timetable),
|
||||||
networkRequestFactory.perform(NetworkRequestType.Marks)
|
networkRequestFactory.perform(NetworkRequestType.Marks),
|
||||||
|
networkRequestFactory.perform(NetworkRequestType.FinalMarks)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -61,27 +65,30 @@ fun localLoad(ctx: Context) {
|
|||||||
global.studentId = Parsing.getStudentId()
|
global.studentId = Parsing.getStudentId()
|
||||||
global.studentClass = Parsing.getStudentClass()
|
global.studentClass = Parsing.getStudentClass()
|
||||||
global.apiEndPoints.marks = "${global.apiEndPoints.apiBase}/v1/students/${global.studentId}/marks/list"
|
global.apiEndPoints.marks = "${global.apiEndPoints.apiBase}/v1/students/${global.studentId}/marks/list"
|
||||||
|
global.apiEndPoints.finalMarks = "${global.apiEndPoints.apiBase}/v1/students/${global.studentId}/marks/final"
|
||||||
val localTimetable = JSONObject(Util.fileToString(global.filePaths.timetable))
|
val localTimetable = JSONObject(Util.fileToString(global.filePaths.timetable))
|
||||||
val localMarks = JSONObject(Util.fileToString(global.filePaths.marks))
|
val localMarks = JSONObject(Util.fileToString(global.filePaths.marks))
|
||||||
|
val localFinalMarks = JSONObject(Util.fileToString(global.filePaths.finalMarks))
|
||||||
|
|
||||||
launchContinue(
|
launchContinue(
|
||||||
ctx,
|
ctx,
|
||||||
localTimetable,
|
localTimetable,
|
||||||
localMarks
|
localMarks,
|
||||||
|
localFinalMarks
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun launchContinue(
|
fun launchContinue(
|
||||||
ctx: Context,
|
ctx: Context,
|
||||||
timetable: JSONObject,
|
timetable: JSONObject,
|
||||||
marks: JSONObject
|
marks: JSONObject,
|
||||||
|
finalMarks: JSONObject
|
||||||
) {
|
) {
|
||||||
// parse timetable and marks
|
// parse timetable and marks
|
||||||
val parsedTimetable = Parsing.parseTimetable(timetable)
|
global.timetable = Parsing.parseTimetable(timetable)
|
||||||
global.timetable = parsedTimetable
|
global.marks = Parsing.parseMarks(marks)
|
||||||
val parsedMarks = Parsing.parseMarks(marks)
|
|
||||||
global.marks = parsedMarks
|
|
||||||
global.newMarks = Parsing.parseNewMarks(marks)
|
global.newMarks = Parsing.parseNewMarks(marks)
|
||||||
|
global.finalMarks = Parsing.parseFinalMarks(finalMarks)
|
||||||
|
|
||||||
// // load the settings
|
// // load the settings
|
||||||
// global.settings = Util.fileToString(global.filePaths.settings).toSettingsData()
|
// global.settings = Util.fileToString(global.filePaths.settings).toSettingsData()
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ fun NewMarksScreen() {
|
|||||||
modifier = Modifier.verticalScroll(ss)
|
modifier = Modifier.verticalScroll(ss)
|
||||||
) {
|
) {
|
||||||
for ((k, v) in global.newMarks) {
|
for ((k, v) in global.newMarks) {
|
||||||
if (v.size > 0) {
|
if (v.isNotEmpty()) {
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(horizontal = 10.dp)
|
.padding(horizontal = 10.dp)
|
||||||
@@ -242,14 +242,13 @@ fun FinalMarksScreen() {
|
|||||||
Column(
|
Column(
|
||||||
modifier = Modifier.verticalScroll(ss)
|
modifier = Modifier.verticalScroll(ss)
|
||||||
) {
|
) {
|
||||||
Text("test", color = Color.White)
|
Text(Util.fileToString(global.filePaths.finalMarks), color = Color.White)
|
||||||
Text("test", color = Color.White)
|
for ((subject, mark) in global.finalMarks) {
|
||||||
Text("test", color = Color.White)
|
Row {
|
||||||
Text("test", color = Color.White)
|
Text(subject, color = Color.White)
|
||||||
Text("test", color = Color.White)
|
Text(mark.toString(), color = Color.White, modifier = Modifier.padding(10.dp))
|
||||||
Text("test", color = Color.White)
|
}
|
||||||
Text("test", color = Color.White)
|
}
|
||||||
Text("test", color = Color.White)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ fun setupAPI() {
|
|||||||
global.studentId = Parsing.getStudentId()
|
global.studentId = Parsing.getStudentId()
|
||||||
|
|
||||||
global.apiEndPoints.marks = "${global.apiEndPoints.apiBase}/v1/students/${global.studentId}/marks/list"
|
global.apiEndPoints.marks = "${global.apiEndPoints.apiBase}/v1/students/${global.studentId}/marks/list"
|
||||||
|
global.apiEndPoints.finalMarks = "${global.apiEndPoints.apiBase}/v1/students/${global.studentId}/marks/final"
|
||||||
|
|
||||||
global.isAPISetUp = true
|
global.isAPISetUp = true
|
||||||
}
|
}
|
||||||
@@ -40,6 +41,7 @@ enum class NetworkRequestType {
|
|||||||
Token,
|
Token,
|
||||||
Timetable,
|
Timetable,
|
||||||
Marks,
|
Marks,
|
||||||
|
FinalMarks,
|
||||||
UserData
|
UserData
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,6 +73,7 @@ object NetworkRequestFactory: NetworkRequestInterface {
|
|||||||
}
|
}
|
||||||
NetworkRequestType.Timetable -> return getAPI(global.apiEndPoints.timetable)
|
NetworkRequestType.Timetable -> return getAPI(global.apiEndPoints.timetable)
|
||||||
NetworkRequestType.Marks -> return getAPI(global.apiEndPoints.marks)
|
NetworkRequestType.Marks -> return getAPI(global.apiEndPoints.marks)
|
||||||
|
NetworkRequestType.FinalMarks -> return getAPI(global.apiEndPoints.finalMarks)
|
||||||
NetworkRequestType.UserData -> return getAPI(global.apiEndPoints.userData)
|
NetworkRequestType.UserData -> return getAPI(global.apiEndPoints.userData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -82,7 +85,13 @@ object NetworkRequestFactory: NetworkRequestInterface {
|
|||||||
.get()
|
.get()
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
return client.newCall(request).execute()
|
return try {
|
||||||
|
client.newCall(request).execute()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Response.Builder()
|
||||||
|
.code(500)
|
||||||
|
.build()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun post(url: String, headers: Headers, body: FormBody): Response {
|
private fun post(url: String, headers: Headers, body: FormBody): Response {
|
||||||
@@ -92,7 +101,13 @@ object NetworkRequestFactory: NetworkRequestInterface {
|
|||||||
.post(body)
|
.post(body)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
return client.newCall(request).execute()
|
return try {
|
||||||
|
client.newCall(request).execute()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Response.Builder()
|
||||||
|
.code(500)
|
||||||
|
.build()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getAPI(url: String): JSONObject {
|
private fun getAPI(url: String): JSONObject {
|
||||||
|
|||||||
@@ -386,16 +386,6 @@ class Parsing {
|
|||||||
|
|
||||||
for (i in 0..<marksJSONArray.length()) {
|
for (i in 0..<marksJSONArray.length()) {
|
||||||
marksList.add(marksJSONArray.getJSONObject(i))
|
marksList.add(marksJSONArray.getJSONObject(i))
|
||||||
marksList.add(marksJSONArray.getJSONObject(i))
|
|
||||||
marksList.add(marksJSONArray.getJSONObject(i))
|
|
||||||
marksList.add(marksJSONArray.getJSONObject(i))
|
|
||||||
marksList.add(marksJSONArray.getJSONObject(i))
|
|
||||||
marksList.add(marksJSONArray.getJSONObject(i))
|
|
||||||
marksList.add(marksJSONArray.getJSONObject(i))
|
|
||||||
marksList.add(marksJSONArray.getJSONObject(i))
|
|
||||||
marksList.add(marksJSONArray.getJSONObject(i))
|
|
||||||
marksList.add(marksJSONArray.getJSONObject(i))
|
|
||||||
marksList.add(marksJSONArray.getJSONObject(i))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (subj in subjectMap.values) {
|
for (subj in subjectMap.values) {
|
||||||
@@ -416,6 +406,14 @@ class Parsing {
|
|||||||
return marks
|
return marks
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun parseFinalMarks(json: JSONObject): Map<String, Int> {
|
||||||
|
return mapOf(
|
||||||
|
"AJ" to 1,
|
||||||
|
"B" to 5,
|
||||||
|
"Pr" to 1
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fun getStudentClass(): String {
|
fun getStudentClass(): String {
|
||||||
return if (!userIsParent()) {
|
return if (!userIsParent()) {
|
||||||
global.userData
|
global.userData
|
||||||
|
|||||||
Reference in New Issue
Block a user