MindKeep / app / src / main / java / com / soteloje / mindkeep / navigation / MindKeepRoutes.kt
MindKeepRoutes.kt
Raw
package com.soteloje.mindkeep.navigation

import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.ui.graphics.vector.ImageVector

sealed class Screens(val route: String, val icon: ImageVector? = null) {

    //Authentication
    object Login : Screens("login", Icons.Default.Lock)
    object RoleSelection : Screens("roleSelection")
    object Signup : Screens("signup/{usertype}", Icons.Default.Create)
    object Authentication : Screens("authentication", Icons.Default.Lock)

    //Bottom Bar
    object Home : Screens("home", Icons.Default.Home)
    object Contacts : Screens("contacts", Icons.Default.Add)
    object Profile : Screens("profile", Icons.Default.Person)


    //Contacts
    object AddContact : Screens("addContact", Icons.Default.Add)
    object ContactRequests : Screens("contactRequests", Icons.Default.Face)

    //ManagedUsers
    object ManagedUsers : Screens("managedUsers")
    object UserCharts : Screens("user_charts")

    //Task management navigation
    object TaskListWelcome : Screens("taskListWelcome")
    //object AddTask : Screens("addTask")
//    object AddTask : Screens("addTask?taskTitle={taskTitle}") {
//        fun createRoute(taskTitle: String? = null): String {
//            return if (taskTitle != null) {
//                "addTask?taskTitle=$taskTitle"
//            } else {
//                "addTask"
//            }
//        }
//    }
    object AddTask : Screens("addTask?routineId={routineId}") {
        fun createRoute(routineId: String): String {
            return "addTask?routineId=$routineId"
        }
    }
    data class UpdateTask(val userId: String, val taskId: String) :
        Screens("updateTask/$userId/$taskId")
    object TaskPriorityList : Screens("taskPriorityList")
    object TaskActionDialog : Screens("taskActionDialog")
    object TaskAddToRoutine : Screens("taskAddToRoutine")

    //routine management navigation
    object RoutineListWelcome : Screens("routineListWelcome")
    object AddRoutine : Screens("addRoutine")
    data class UpdateRoutine(val userId: String, val routineId: String) :
        Screens("updateRoutine/$userId/$routineId")

    data class TasksListInRoutine(val routineId: String):
            Screens("taskListInRoutine/$routineId")

    data class UpdateTaskInRoutine(val routineId: String?, val taskId:String):
            Screens("updateTaskInRoutine/$routineId/$taskId")


    object TemplateStartScreen : Screens("templateStartScreen")
    object TemplateActivitiesScreen : Screens("templateActivitiesScreen")
    object SelectedActivitiesScreen : Screens("selectedActivitiesScreen")
    object LoadingStartScreen : Screens("loadingStartScreen")

    // AR Navigation
    object ArCreatePathCompScreen : Screens("arCreatePathFragment")
    object ArFollowPathCompScreen : Screens("arFollowPathFragment")
    object CreateItemScreen : Screens("createItemScreen")
}