From 8fb10855c606bc1fa1ada9fc2037ce8bc0732da0 Mon Sep 17 00:00:00 2001
From: afnanramadhan <13521011@std.stei.itb.ac.id>
Date: Fri, 5 Apr 2024 14:22:56 +0700
Subject: [PATCH] feat: refactor all file

---
 app/src/main/AndroidManifest.xml              |  8 +--
 .../com/example/android_hit/HeaderGraphs.kt   | 59 -------------------
 .../com/example/android_hit/HeaderNetwork.kt  | 59 -------------------
 .../com/example/android_hit/HeaderScan.kt     | 59 -------------------
 .../com/example/android_hit/HeaderSettings.kt | 59 -------------------
 .../example/android_hit/HeaderTransaction.kt  | 59 -------------------
 .../com/example/android_hit/HeaderTwibbon.kt  | 59 -------------------
 .../com/example/android_hit/MainActivity.kt   | 13 ++++
 .../com/example/android_hit/NetworkError.kt   | 59 -------------------
 .../android_hit/adapter/TransactionAdapter.kt |  2 +-
 .../android_hit/{ => ui/graph}/Graphs.kt      |  4 +-
 .../android_hit/ui/graph/HeaderGraphs.kt      | 26 ++++++++
 .../{ => ui/login}/LoginActivity.kt           |  5 +-
 .../{ => ui/login}/LoginFragment.kt           |  5 +-
 .../android_hit/ui/network/HeaderNetwork.kt   | 26 ++++++++
 .../android_hit/ui/network/NetworkError.kt    | 25 ++++++++
 .../example/android_hit/ui/scan/HeaderScan.kt | 26 ++++++++
 .../example/android_hit/{ => ui/scan}/Scan.kt |  3 +-
 .../android_hit/ui/setting/HeaderSettings.kt  | 25 ++++++++
 .../android_hit/{ => ui/setting}/Settings.kt  |  6 +-
 .../splash_screen}/BondoManSplashScreen.kt    |  4 +-
 .../{ => ui/transaction}/DetailTransaction.kt | 18 ++++--
 .../transaction}/DetailTransactionActivity.kt |  3 +-
 .../transaction}/HeaderDetailTransaction.kt   | 32 ++--------
 .../ui/transaction/HeaderTransaction.kt       | 26 ++++++++
 .../{ => ui/transaction}/Transaction.kt       | 31 +---------
 .../{ => ui/twibbon}/FragmentTwibbon.kt       |  2 +-
 .../android_hit/ui/twibbon/HeaderTwibbon.kt   | 24 ++++++++
 .../{ => utils}/CheckJWTBackground.kt         |  4 +-
 .../android_hit/{ => utils}/NetworkManager.kt |  2 +-
 .../fragment_detail_transaction.xml           |  2 +-
 .../main/res/layout-land/fragment_graphs.xml  |  2 +-
 .../main/res/layout-land/fragment_scan.xml    |  2 +-
 .../res/layout-land/fragment_settings.xml     |  2 +-
 .../res/layout-land/fragment_transaction.xml  |  2 +-
 .../main/res/layout-land/fragment_twibbon.xml |  2 +-
 .../activity_bondo_man_splash_screen.xml      |  2 +-
 .../layout/activity_detail_transaction.xml    |  2 +-
 app/src/main/res/layout/activity_login.xml    |  2 +-
 .../layout/fragment_detail_transaction.xml    |  2 +-
 app/src/main/res/layout/fragment_graphs.xml   |  2 +-
 .../fragment_header_detail_transaction.xml    |  2 +-
 app/src/main/res/layout/fragment_login.xml    |  2 +-
 .../res/layout/fragment_network_error.xml     |  2 +-
 app/src/main/res/layout/fragment_scan.xml     |  2 +-
 app/src/main/res/layout/fragment_settings.xml |  2 +-
 .../main/res/layout/fragment_transaction.xml  |  2 +-
 app/src/main/res/layout/fragment_twibbon.xml  |  2 +-
 app/src/main/res/navigation/nav_graph.xml     |  4 +-
 49 files changed, 260 insertions(+), 513 deletions(-)
 delete mode 100644 app/src/main/java/com/example/android_hit/HeaderGraphs.kt
 delete mode 100644 app/src/main/java/com/example/android_hit/HeaderNetwork.kt
 delete mode 100644 app/src/main/java/com/example/android_hit/HeaderScan.kt
 delete mode 100644 app/src/main/java/com/example/android_hit/HeaderSettings.kt
 delete mode 100644 app/src/main/java/com/example/android_hit/HeaderTransaction.kt
 delete mode 100644 app/src/main/java/com/example/android_hit/HeaderTwibbon.kt
 delete mode 100644 app/src/main/java/com/example/android_hit/NetworkError.kt
 rename app/src/main/java/com/example/android_hit/{ => ui/graph}/Graphs.kt (97%)
 create mode 100644 app/src/main/java/com/example/android_hit/ui/graph/HeaderGraphs.kt
 rename app/src/main/java/com/example/android_hit/{ => ui/login}/LoginActivity.kt (92%)
 rename app/src/main/java/com/example/android_hit/{ => ui/login}/LoginFragment.kt (96%)
 create mode 100644 app/src/main/java/com/example/android_hit/ui/network/HeaderNetwork.kt
 create mode 100644 app/src/main/java/com/example/android_hit/ui/network/NetworkError.kt
 create mode 100644 app/src/main/java/com/example/android_hit/ui/scan/HeaderScan.kt
 rename app/src/main/java/com/example/android_hit/{ => ui/scan}/Scan.kt (99%)
 create mode 100644 app/src/main/java/com/example/android_hit/ui/setting/HeaderSettings.kt
 rename app/src/main/java/com/example/android_hit/{ => ui/setting}/Settings.kt (97%)
 rename app/src/main/java/com/example/android_hit/{ => ui/splash_screen}/BondoManSplashScreen.kt (81%)
 rename app/src/main/java/com/example/android_hit/{ => ui/transaction}/DetailTransaction.kt (97%)
 rename app/src/main/java/com/example/android_hit/{ => ui/transaction}/DetailTransactionActivity.kt (91%)
 rename app/src/main/java/com/example/android_hit/{ => ui/transaction}/HeaderDetailTransaction.kt (52%)
 create mode 100644 app/src/main/java/com/example/android_hit/ui/transaction/HeaderTransaction.kt
 rename app/src/main/java/com/example/android_hit/{ => ui/transaction}/Transaction.kt (78%)
 rename app/src/main/java/com/example/android_hit/{ => ui/twibbon}/FragmentTwibbon.kt (99%)
 create mode 100644 app/src/main/java/com/example/android_hit/ui/twibbon/HeaderTwibbon.kt
 rename app/src/main/java/com/example/android_hit/{ => utils}/CheckJWTBackground.kt (96%)
 rename app/src/main/java/com/example/android_hit/{ => utils}/NetworkManager.kt (98%)

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cb0763c..11ee0a1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -31,17 +31,17 @@
         android:theme="@style/Theme.AndroidHIT"
         tools:targetApi="31">
         <activity
-            android:name=".LoginActivity"
+            android:name=".ui.login.LoginActivity"
             android:exported="false" />
         <activity
-            android:name=".DetailTransactionActivity"
+            android:name=".ui.transaction.DetailTransactionActivity"
             android:exported="false" />
         <activity
             android:name=".MainActivity"
             android:exported="false" />
 
         <activity
-            android:name=".BondoManSplashScreen"
+            android:name=".ui.splash_screen.BondoManSplashScreen"
             android:exported="true"
             android:theme="@style/Theme.Design.Light.NoActionBar">
             <intent-filter>
@@ -50,7 +50,7 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-        <service android:name=".CheckJWTBackground"/>
+        <service android:name=".utils.CheckJWTBackground"/>
         <provider
             android:name="androidx.core.content.FileProvider"
             android:authorities="com.example.android_hit.fileprovider"
diff --git a/app/src/main/java/com/example/android_hit/HeaderGraphs.kt b/app/src/main/java/com/example/android_hit/HeaderGraphs.kt
deleted file mode 100644
index ba03b66..0000000
--- a/app/src/main/java/com/example/android_hit/HeaderGraphs.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderGraphs.newInstance] factory method to
- * create an instance of this fragment.
- */
-class HeaderGraphs : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_header_graphs, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderGraphs.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            HeaderGraphs().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/HeaderNetwork.kt b/app/src/main/java/com/example/android_hit/HeaderNetwork.kt
deleted file mode 100644
index c5409f4..0000000
--- a/app/src/main/java/com/example/android_hit/HeaderNetwork.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderNetwork.newInstance] factory method to
- * create an instance of this fragment.
- */
-class HeaderNetwork : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_header_network, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderNetwork.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            HeaderNetwork().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/HeaderScan.kt b/app/src/main/java/com/example/android_hit/HeaderScan.kt
deleted file mode 100644
index e92e741..0000000
--- a/app/src/main/java/com/example/android_hit/HeaderScan.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderScan.newInstance] factory method to
- * create an instance of this fragment.
- */
-class HeaderScan : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_header_scan, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderScan.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            HeaderScan().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/HeaderSettings.kt b/app/src/main/java/com/example/android_hit/HeaderSettings.kt
deleted file mode 100644
index 83efb81..0000000
--- a/app/src/main/java/com/example/android_hit/HeaderSettings.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderSettings.newInstance] factory method to
- * create an instance of this fragment.
- */
-class HeaderSettings : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_header_settings, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderSettings.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            HeaderSettings().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/HeaderTransaction.kt b/app/src/main/java/com/example/android_hit/HeaderTransaction.kt
deleted file mode 100644
index 10d9657..0000000
--- a/app/src/main/java/com/example/android_hit/HeaderTransaction.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderTransaction.newInstance] factory method to
- * create an instance of this fragment.
- */
-class HeaderTransaction : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_header_transaction, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderTransaction.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            HeaderTransaction().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/HeaderTwibbon.kt b/app/src/main/java/com/example/android_hit/HeaderTwibbon.kt
deleted file mode 100644
index ed71eb1..0000000
--- a/app/src/main/java/com/example/android_hit/HeaderTwibbon.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderTwibbon.newInstance] factory method to
- * create an instance of this fragment.
- */
-class HeaderTwibbon : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_header_twibbon, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderTwibbon.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            HeaderTwibbon().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/MainActivity.kt b/app/src/main/java/com/example/android_hit/MainActivity.kt
index 23388d2..eedf0be 100644
--- a/app/src/main/java/com/example/android_hit/MainActivity.kt
+++ b/app/src/main/java/com/example/android_hit/MainActivity.kt
@@ -13,7 +13,20 @@ import com.example.android_hit.data.LoginPayload
 import com.example.android_hit.data.LoginResponse
 import com.example.android_hit.data.TokenResponse
 import com.example.android_hit.databinding.ActivityMainBinding
+import com.example.android_hit.ui.graph.Graphs
+import com.example.android_hit.ui.graph.HeaderGraphs
+import com.example.android_hit.ui.login.LoginActivity
+import com.example.android_hit.ui.scan.HeaderScan
+import com.example.android_hit.ui.scan.Scan
+import com.example.android_hit.ui.setting.HeaderSettings
+import com.example.android_hit.ui.setting.Settings
+import com.example.android_hit.ui.transaction.HeaderTransaction
+import com.example.android_hit.ui.transaction.Transaction
+import com.example.android_hit.ui.twibbon.FragmentTwibbon
+import com.example.android_hit.ui.twibbon.HeaderTwibbon
+import com.example.android_hit.utils.CheckJWTBackground
 import com.example.android_hit.utils.CryptoManager
+import com.example.android_hit.utils.NetworkManager
 import com.example.android_hit.utils.TokenManager
 import com.example.android_hit.utils.UserManager
 import retrofit2.Call
diff --git a/app/src/main/java/com/example/android_hit/NetworkError.kt b/app/src/main/java/com/example/android_hit/NetworkError.kt
deleted file mode 100644
index faeceb8..0000000
--- a/app/src/main/java/com/example/android_hit/NetworkError.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [NetworkError.newInstance] factory method to
- * create an instance of this fragment.
- */
-class NetworkError : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_network_error, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment NetworkError.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            NetworkError().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/adapter/TransactionAdapter.kt b/app/src/main/java/com/example/android_hit/adapter/TransactionAdapter.kt
index 222f109..04766cd 100644
--- a/app/src/main/java/com/example/android_hit/adapter/TransactionAdapter.kt
+++ b/app/src/main/java/com/example/android_hit/adapter/TransactionAdapter.kt
@@ -7,7 +7,7 @@ import android.view.ViewGroup
 import androidx.core.content.ContextCompat
 import androidx.core.content.ContextCompat.startActivity
 import androidx.recyclerview.widget.RecyclerView
-import com.example.android_hit.DetailTransactionActivity
+import com.example.android_hit.ui.transaction.DetailTransactionActivity
 import com.example.android_hit.R
 import com.example.android_hit.databinding.RowTransactionBinding
 import com.example.android_hit.room.TransactionEntity
diff --git a/app/src/main/java/com/example/android_hit/Graphs.kt b/app/src/main/java/com/example/android_hit/ui/graph/Graphs.kt
similarity index 97%
rename from app/src/main/java/com/example/android_hit/Graphs.kt
rename to app/src/main/java/com/example/android_hit/ui/graph/Graphs.kt
index 623317f..299f47d 100644
--- a/app/src/main/java/com/example/android_hit/Graphs.kt
+++ b/app/src/main/java/com/example/android_hit/ui/graph/Graphs.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.graph
 
 
 import java.text.NumberFormat
@@ -10,6 +10,7 @@ import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import androidx.fragment.app.Fragment
+import com.example.android_hit.R
 import com.example.android_hit.adapter.TransactionAdapter
 import com.example.android_hit.databinding.FragmentGraphsBinding
 import com.example.android_hit.room.TransactionDB
@@ -20,7 +21,6 @@ import com.github.mikephil.charting.components.Legend
 import com.github.mikephil.charting.data.PieData
 import com.github.mikephil.charting.data.PieDataSet
 import com.github.mikephil.charting.data.PieEntry
-import com.github.mikephil.charting.formatter.PercentFormatter
 
 
 class Graphs : Fragment() {
diff --git a/app/src/main/java/com/example/android_hit/ui/graph/HeaderGraphs.kt b/app/src/main/java/com/example/android_hit/ui/graph/HeaderGraphs.kt
new file mode 100644
index 0000000..ba9c06d
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/graph/HeaderGraphs.kt
@@ -0,0 +1,26 @@
+package com.example.android_hit.ui.graph
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.android_hit.R
+
+
+class HeaderGraphs : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_header_graphs, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/LoginActivity.kt b/app/src/main/java/com/example/android_hit/ui/login/LoginActivity.kt
similarity index 92%
rename from app/src/main/java/com/example/android_hit/LoginActivity.kt
rename to app/src/main/java/com/example/android_hit/ui/login/LoginActivity.kt
index b0e6e36..2d244d2 100644
--- a/app/src/main/java/com/example/android_hit/LoginActivity.kt
+++ b/app/src/main/java/com/example/android_hit/ui/login/LoginActivity.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.login
 
 import android.app.AlertDialog
 import android.content.Intent
@@ -7,6 +7,9 @@ import android.view.View
 import android.widget.Button
 import androidx.appcompat.app.AppCompatActivity
 import androidx.fragment.app.FragmentManager
+import com.example.android_hit.utils.CheckJWTBackground
+import com.example.android_hit.MainActivity
+import com.example.android_hit.R
 import com.example.android_hit.utils.TokenManager
 
 class LoginActivity : AppCompatActivity() {
diff --git a/app/src/main/java/com/example/android_hit/LoginFragment.kt b/app/src/main/java/com/example/android_hit/ui/login/LoginFragment.kt
similarity index 96%
rename from app/src/main/java/com/example/android_hit/LoginFragment.kt
rename to app/src/main/java/com/example/android_hit/ui/login/LoginFragment.kt
index 6427577..1bd20e5 100644
--- a/app/src/main/java/com/example/android_hit/LoginFragment.kt
+++ b/app/src/main/java/com/example/android_hit/ui/login/LoginFragment.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.login
 
 import android.annotation.SuppressLint
 import android.content.Context
@@ -13,6 +13,9 @@ import android.widget.Button
 import android.widget.EditText
 import android.widget.Toast
 import androidx.fragment.app.Fragment
+import com.example.android_hit.utils.CheckJWTBackground
+import com.example.android_hit.MainActivity
+import com.example.android_hit.R
 import com.example.android_hit.api.RetrofitClient
 import com.example.android_hit.data.LoginPayload
 import com.example.android_hit.data.LoginResponse
diff --git a/app/src/main/java/com/example/android_hit/ui/network/HeaderNetwork.kt b/app/src/main/java/com/example/android_hit/ui/network/HeaderNetwork.kt
new file mode 100644
index 0000000..b671320
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/network/HeaderNetwork.kt
@@ -0,0 +1,26 @@
+package com.example.android_hit.ui.network
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.example.android_hit.R
+
+
+class HeaderNetwork : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_header_network, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/ui/network/NetworkError.kt b/app/src/main/java/com/example/android_hit/ui/network/NetworkError.kt
new file mode 100644
index 0000000..36b2847
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/network/NetworkError.kt
@@ -0,0 +1,25 @@
+package com.example.android_hit.ui.network
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.example.android_hit.R
+
+
+class NetworkError : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_network_error, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/ui/scan/HeaderScan.kt b/app/src/main/java/com/example/android_hit/ui/scan/HeaderScan.kt
new file mode 100644
index 0000000..e5a9064
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/scan/HeaderScan.kt
@@ -0,0 +1,26 @@
+package com.example.android_hit.ui.scan
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.android_hit.R
+
+
+class HeaderScan : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_header_scan, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/Scan.kt b/app/src/main/java/com/example/android_hit/ui/scan/Scan.kt
similarity index 99%
rename from app/src/main/java/com/example/android_hit/Scan.kt
rename to app/src/main/java/com/example/android_hit/ui/scan/Scan.kt
index 7ed471b..70188ab 100644
--- a/app/src/main/java/com/example/android_hit/Scan.kt
+++ b/app/src/main/java/com/example/android_hit/ui/scan/Scan.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.scan
 
 import android.Manifest
 import android.app.Activity
@@ -27,6 +27,7 @@ import androidx.activity.result.contract.ActivityResultContracts
 import androidx.core.app.ActivityCompat
 import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
+import com.example.android_hit.R
 import com.example.android_hit.api.RetrofitClient
 import com.example.android_hit.data.ScanResponse
 import com.example.android_hit.room.TransactionDB
diff --git a/app/src/main/java/com/example/android_hit/ui/setting/HeaderSettings.kt b/app/src/main/java/com/example/android_hit/ui/setting/HeaderSettings.kt
new file mode 100644
index 0000000..e2608b9
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/setting/HeaderSettings.kt
@@ -0,0 +1,25 @@
+package com.example.android_hit.ui.setting
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.android_hit.R
+
+
+class HeaderSettings : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_header_settings, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/Settings.kt b/app/src/main/java/com/example/android_hit/ui/setting/Settings.kt
similarity index 97%
rename from app/src/main/java/com/example/android_hit/Settings.kt
rename to app/src/main/java/com/example/android_hit/ui/setting/Settings.kt
index cd1fb77..a7bdc24 100644
--- a/app/src/main/java/com/example/android_hit/Settings.kt
+++ b/app/src/main/java/com/example/android_hit/ui/setting/Settings.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.setting
 
 import android.Manifest
 import android.annotation.SuppressLint
@@ -20,8 +20,12 @@ import androidx.core.content.ContextCompat
 import androidx.core.content.FileProvider
 import androidx.fragment.app.Fragment
 import androidx.localbroadcastmanager.content.LocalBroadcastManager
+import com.example.android_hit.utils.CheckJWTBackground
+import com.example.android_hit.ui.login.LoginActivity
+import com.example.android_hit.R
 import com.example.android_hit.room.TransactionDB
 import com.example.android_hit.room.TransactionEntity
+import com.example.android_hit.ui.transaction.DetailTransactionActivity
 import com.example.android_hit.utils.TokenManager
 import com.example.android_hit.utils.UserManager
 import org.apache.poi.hssf.usermodel.HSSFWorkbook
diff --git a/app/src/main/java/com/example/android_hit/BondoManSplashScreen.kt b/app/src/main/java/com/example/android_hit/ui/splash_screen/BondoManSplashScreen.kt
similarity index 81%
rename from app/src/main/java/com/example/android_hit/BondoManSplashScreen.kt
rename to app/src/main/java/com/example/android_hit/ui/splash_screen/BondoManSplashScreen.kt
index be9bcb1..00fcff9 100644
--- a/app/src/main/java/com/example/android_hit/BondoManSplashScreen.kt
+++ b/app/src/main/java/com/example/android_hit/ui/splash_screen/BondoManSplashScreen.kt
@@ -1,8 +1,10 @@
-package com.example.android_hit
+package com.example.android_hit.ui.splash_screen
 
 import android.content.Intent
 import androidx.appcompat.app.AppCompatActivity
 import android.os.Bundle
+import com.example.android_hit.ui.login.LoginActivity
+import com.example.android_hit.R
 import java.util.Timer
 import java.util.TimerTask
 
diff --git a/app/src/main/java/com/example/android_hit/DetailTransaction.kt b/app/src/main/java/com/example/android_hit/ui/transaction/DetailTransaction.kt
similarity index 97%
rename from app/src/main/java/com/example/android_hit/DetailTransaction.kt
rename to app/src/main/java/com/example/android_hit/ui/transaction/DetailTransaction.kt
index dfefc31..7747277 100644
--- a/app/src/main/java/com/example/android_hit/DetailTransaction.kt
+++ b/app/src/main/java/com/example/android_hit/ui/transaction/DetailTransaction.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.transaction
 
 import android.Manifest
 import android.app.Activity
@@ -23,6 +23,8 @@ import androidx.core.app.ActivityCompat
 import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
 import androidx.localbroadcastmanager.content.LocalBroadcastManager
+import com.example.android_hit.MainActivity
+import com.example.android_hit.R
 import com.example.android_hit.databinding.FragmentDetailTransactionBinding
 import com.example.android_hit.room.TransactionDB
 import com.example.android_hit.room.TransactionEntity
@@ -97,7 +99,9 @@ class DetailTransaction : Fragment(), LocationListener {
         binding.radioExpense.setOnCheckedChangeListener { _, isChecked ->
             if (isChecked) {
                 category = "Expense"
-                binding.radioExpense.setTextColor(ContextCompat.getColor(requireContext(), R.color.secondary4))
+                binding.radioExpense.setTextColor(ContextCompat.getColor(requireContext(),
+                    R.color.secondary4
+                ))
             } else {
                 binding.radioExpense.setTextColor(
                     ContextCompat.getColor(
@@ -111,7 +115,9 @@ class DetailTransaction : Fragment(), LocationListener {
         binding.radioIncome.setOnCheckedChangeListener { _, isChecked ->
             if (isChecked) {
                 category = "Income"
-                binding.radioIncome.setTextColor(ContextCompat.getColor(requireContext(), R.color.secondary5))
+                binding.radioIncome.setTextColor(ContextCompat.getColor(requireContext(),
+                    R.color.secondary5
+                ))
             } else {
                 binding.radioIncome.setTextColor(
                     ContextCompat.getColor(
@@ -122,7 +128,7 @@ class DetailTransaction : Fragment(), LocationListener {
             }
         }
 
-        if(amountInput!=""){
+        if(amountInput !=""){
             binding.inputAmount.setText(amountInput)
         }
         val intent = requireActivity().intent.extras
@@ -325,8 +331,8 @@ class DetailTransaction : Fragment(), LocationListener {
     override fun onDestroyView() {
         super.onDestroyView()
         _binding = null
-        amountInput=""
-        if(fragmentCounter>1){
+        amountInput =""
+        if(fragmentCounter >1){
             LocalBroadcastManager.getInstance(requireContext()).unregisterReceiver(transactionReceiver)
         }
     }
diff --git a/app/src/main/java/com/example/android_hit/DetailTransactionActivity.kt b/app/src/main/java/com/example/android_hit/ui/transaction/DetailTransactionActivity.kt
similarity index 91%
rename from app/src/main/java/com/example/android_hit/DetailTransactionActivity.kt
rename to app/src/main/java/com/example/android_hit/ui/transaction/DetailTransactionActivity.kt
index 69c9b01..e583981 100644
--- a/app/src/main/java/com/example/android_hit/DetailTransactionActivity.kt
+++ b/app/src/main/java/com/example/android_hit/ui/transaction/DetailTransactionActivity.kt
@@ -1,8 +1,9 @@
-package com.example.android_hit
+package com.example.android_hit.ui.transaction
 
 import androidx.appcompat.app.AppCompatActivity
 import android.os.Bundle
 import androidx.fragment.app.Fragment
+import com.example.android_hit.R
 import com.example.android_hit.databinding.ActivityDetailTransactionBinding
 
 class DetailTransactionActivity : AppCompatActivity() {
diff --git a/app/src/main/java/com/example/android_hit/HeaderDetailTransaction.kt b/app/src/main/java/com/example/android_hit/ui/transaction/HeaderDetailTransaction.kt
similarity index 52%
rename from app/src/main/java/com/example/android_hit/HeaderDetailTransaction.kt
rename to app/src/main/java/com/example/android_hit/ui/transaction/HeaderDetailTransaction.kt
index 3c64514..64fdbfa 100644
--- a/app/src/main/java/com/example/android_hit/HeaderDetailTransaction.kt
+++ b/app/src/main/java/com/example/android_hit/ui/transaction/HeaderDetailTransaction.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.transaction
 
 import android.content.Intent
 import android.os.Bundle
@@ -6,18 +6,11 @@ import androidx.fragment.app.Fragment
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import com.example.android_hit.MainActivity
+import com.example.android_hit.R
 import com.example.android_hit.databinding.FragmentHeaderDetailTransactionBinding
 
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
 
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderDetailTransaction.newInstance] factory method to
- * create an instance of this fragment.
- */
 class HeaderDetailTransaction : Fragment() {
     private var _binding: FragmentHeaderDetailTransactionBinding? = null
     private val binding get() = _binding!!
@@ -39,22 +32,5 @@ class HeaderDetailTransaction : Fragment() {
         }
     }
 
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderDetailTransaction.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic fun newInstance(param1: String, param2: String) =
-                HeaderDetailTransaction().apply {
-                    arguments = Bundle().apply {
-                        putString(ARG_PARAM1, param1)
-                        putString(ARG_PARAM2, param2)
-                    }
-                }
-    }
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/ui/transaction/HeaderTransaction.kt b/app/src/main/java/com/example/android_hit/ui/transaction/HeaderTransaction.kt
new file mode 100644
index 0000000..30005de
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/transaction/HeaderTransaction.kt
@@ -0,0 +1,26 @@
+package com.example.android_hit.ui.transaction
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.android_hit.R
+
+
+class HeaderTransaction : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_header_transaction, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/Transaction.kt b/app/src/main/java/com/example/android_hit/ui/transaction/Transaction.kt
similarity index 78%
rename from app/src/main/java/com/example/android_hit/Transaction.kt
rename to app/src/main/java/com/example/android_hit/ui/transaction/Transaction.kt
index 3658c44..477a666 100644
--- a/app/src/main/java/com/example/android_hit/Transaction.kt
+++ b/app/src/main/java/com/example/android_hit/ui/transaction/Transaction.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.transaction
 
 import android.content.Intent
 import android.os.Bundle
@@ -17,16 +17,7 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton
 import java.text.NumberFormat
 import java.util.Locale
 
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
 
-/**
- * A simple [Fragment] subclass.
- * Use the [Transaction.newInstance] factory method to
- * create an instance of this fragment.
- */
 class Transaction : Fragment() {
     private lateinit var binding: FragmentTransactionBinding
     private lateinit var recyclerView: RecyclerView
@@ -109,23 +100,5 @@ class Transaction : Fragment() {
         super.onResume()
         getData()
     }
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment Transaction.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            Transaction().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/FragmentTwibbon.kt b/app/src/main/java/com/example/android_hit/ui/twibbon/FragmentTwibbon.kt
similarity index 99%
rename from app/src/main/java/com/example/android_hit/FragmentTwibbon.kt
rename to app/src/main/java/com/example/android_hit/ui/twibbon/FragmentTwibbon.kt
index e9ef312..600e193 100644
--- a/app/src/main/java/com/example/android_hit/FragmentTwibbon.kt
+++ b/app/src/main/java/com/example/android_hit/ui/twibbon/FragmentTwibbon.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.twibbon
 
 import android.annotation.SuppressLint
 import android.app.Activity
diff --git a/app/src/main/java/com/example/android_hit/ui/twibbon/HeaderTwibbon.kt b/app/src/main/java/com/example/android_hit/ui/twibbon/HeaderTwibbon.kt
new file mode 100644
index 0000000..a616cfb
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/twibbon/HeaderTwibbon.kt
@@ -0,0 +1,24 @@
+package com.example.android_hit.ui.twibbon
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.android_hit.R
+
+
+class HeaderTwibbon : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+    }
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_header_twibbon, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/CheckJWTBackground.kt b/app/src/main/java/com/example/android_hit/utils/CheckJWTBackground.kt
similarity index 96%
rename from app/src/main/java/com/example/android_hit/CheckJWTBackground.kt
rename to app/src/main/java/com/example/android_hit/utils/CheckJWTBackground.kt
index 5cb54e1..a9b6423 100644
--- a/app/src/main/java/com/example/android_hit/CheckJWTBackground.kt
+++ b/app/src/main/java/com/example/android_hit/utils/CheckJWTBackground.kt
@@ -1,11 +1,11 @@
-package com.example.android_hit
+package com.example.android_hit.utils
 
 import android.app.Service
 import android.content.Intent
 import android.os.Handler
 import android.os.IBinder
 import android.util.Log
-import com.example.android_hit.utils.TokenManager
+import com.example.android_hit.MainActivity
 import kotlin.concurrent.thread
 
 class CheckJWTBackground:Service() {
diff --git a/app/src/main/java/com/example/android_hit/NetworkManager.kt b/app/src/main/java/com/example/android_hit/utils/NetworkManager.kt
similarity index 98%
rename from app/src/main/java/com/example/android_hit/NetworkManager.kt
rename to app/src/main/java/com/example/android_hit/utils/NetworkManager.kt
index 1d474c6..6611373 100644
--- a/app/src/main/java/com/example/android_hit/NetworkManager.kt
+++ b/app/src/main/java/com/example/android_hit/utils/NetworkManager.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.utils
 
 import android.content.Context
 import android.net.ConnectivityManager
diff --git a/app/src/main/res/layout-land/fragment_detail_transaction.xml b/app/src/main/res/layout-land/fragment_detail_transaction.xml
index 9bed128..5629c00 100644
--- a/app/src/main/res/layout-land/fragment_detail_transaction.xml
+++ b/app/src/main/res/layout-land/fragment_detail_transaction.xml
@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    tools:context=".DetailTransaction">
+    tools:context=".ui.transaction.DetailTransaction">
 
     <ScrollView
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout-land/fragment_graphs.xml b/app/src/main/res/layout-land/fragment_graphs.xml
index 1536bad..29a1ef0 100644
--- a/app/src/main/res/layout-land/fragment_graphs.xml
+++ b/app/src/main/res/layout-land/fragment_graphs.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Graphs">
+    tools:context=".ui.graph.Graphs">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout-land/fragment_scan.xml b/app/src/main/res/layout-land/fragment_scan.xml
index 550ff95..1b91324 100644
--- a/app/src/main/res/layout-land/fragment_scan.xml
+++ b/app/src/main/res/layout-land/fragment_scan.xml
@@ -3,7 +3,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Scan">
+    tools:context=".ui.scan.Scan">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout-land/fragment_settings.xml b/app/src/main/res/layout-land/fragment_settings.xml
index 65af9ca..8f21510 100644
--- a/app/src/main/res/layout-land/fragment_settings.xml
+++ b/app/src/main/res/layout-land/fragment_settings.xml
@@ -3,7 +3,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Settings">
+    tools:context=".ui.setting.Settings">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout-land/fragment_transaction.xml b/app/src/main/res/layout-land/fragment_transaction.xml
index ef8b5a5..f4ac546 100644
--- a/app/src/main/res/layout-land/fragment_transaction.xml
+++ b/app/src/main/res/layout-land/fragment_transaction.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Transaction">
+    tools:context=".ui.transaction.Transaction">
 
     <ScrollView
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout-land/fragment_twibbon.xml b/app/src/main/res/layout-land/fragment_twibbon.xml
index 723cced..7d7e063 100644
--- a/app/src/main/res/layout-land/fragment_twibbon.xml
+++ b/app/src/main/res/layout-land/fragment_twibbon.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".FragmentTwibbon">
+    tools:context=".ui.twibbon.FragmentTwibbon">
 
 
     <FrameLayout
diff --git a/app/src/main/res/layout/activity_bondo_man_splash_screen.xml b/app/src/main/res/layout/activity_bondo_man_splash_screen.xml
index 7b5e12c..7182db2 100644
--- a/app/src/main/res/layout/activity_bondo_man_splash_screen.xml
+++ b/app/src/main/res/layout/activity_bondo_man_splash_screen.xml
@@ -8,7 +8,7 @@
     android:background="@drawable/background_gradient_splashscreen"
     android:gravity="center_horizontal"
     android:orientation="vertical"
-    tools:context=".BondoManSplashScreen">
+    tools:context=".ui.splash_screen.BondoManSplashScreen">
 
     <ImageView
         android:id="@+id/imageView2"
diff --git a/app/src/main/res/layout/activity_detail_transaction.xml b/app/src/main/res/layout/activity_detail_transaction.xml
index 03af554..3f6e6a1 100644
--- a/app/src/main/res/layout/activity_detail_transaction.xml
+++ b/app/src/main/res/layout/activity_detail_transaction.xml
@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/primary_color_4"
-    tools:context=".DetailTransactionActivity">
+    tools:context=".ui.transaction.DetailTransactionActivity">
 
     <FrameLayout
         android:id="@+id/header_layout"
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 64d347f..05b1e83 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -6,7 +6,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@drawable/login_background"
-    tools:context=".LoginActivity">
+    tools:context=".ui.login.LoginActivity">
 
     <ImageView
         android:id="@+id/logoLogin"
diff --git a/app/src/main/res/layout/fragment_detail_transaction.xml b/app/src/main/res/layout/fragment_detail_transaction.xml
index 6172699..b5f5571 100644
--- a/app/src/main/res/layout/fragment_detail_transaction.xml
+++ b/app/src/main/res/layout/fragment_detail_transaction.xml
@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    tools:context=".DetailTransaction">
+    tools:context=".ui.transaction.DetailTransaction">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_graphs.xml b/app/src/main/res/layout/fragment_graphs.xml
index e2436c8..8856243 100644
--- a/app/src/main/res/layout/fragment_graphs.xml
+++ b/app/src/main/res/layout/fragment_graphs.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Graphs">
+    tools:context=".ui.graph.Graphs">
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_header_detail_transaction.xml b/app/src/main/res/layout/fragment_header_detail_transaction.xml
index b5734b6..2aeb3f4 100644
--- a/app/src/main/res/layout/fragment_header_detail_transaction.xml
+++ b/app/src/main/res/layout/fragment_header_detail_transaction.xml
@@ -4,7 +4,7 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="@color/primary_color_4"
-    tools:context=".HeaderDetailTransaction">
+    tools:context=".ui.transaction.HeaderDetailTransaction">
 
     <FrameLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml
index f8b2883..0294f50 100644
--- a/app/src/main/res/layout/fragment_login.xml
+++ b/app/src/main/res/layout/fragment_login.xml
@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@drawable/login_backgroud2"
-    tools:context=".LoginFragment">
+    tools:context=".ui.login.LoginFragment">
 
     <TextView
         android:id="@+id/backButton"
diff --git a/app/src/main/res/layout/fragment_network_error.xml b/app/src/main/res/layout/fragment_network_error.xml
index 130fe17..a1214f6 100644
--- a/app/src/main/res/layout/fragment_network_error.xml
+++ b/app/src/main/res/layout/fragment_network_error.xml
@@ -3,7 +3,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".NetworkError">
+    tools:context=".ui.network.NetworkError">
 
     <!-- TODO: Update blank fragment layout -->
     <ImageView
diff --git a/app/src/main/res/layout/fragment_scan.xml b/app/src/main/res/layout/fragment_scan.xml
index 6b3b204..64ae7df 100644
--- a/app/src/main/res/layout/fragment_scan.xml
+++ b/app/src/main/res/layout/fragment_scan.xml
@@ -3,7 +3,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Scan">
+    tools:context=".ui.scan.Scan">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index 1f78085..a413a48 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -3,7 +3,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Settings">
+    tools:context=".ui.setting.Settings">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_transaction.xml b/app/src/main/res/layout/fragment_transaction.xml
index 89b3de3..dd47a2e 100644
--- a/app/src/main/res/layout/fragment_transaction.xml
+++ b/app/src/main/res/layout/fragment_transaction.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Transaction">
+    tools:context=".ui.transaction.Transaction">
 
     <ScrollView
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_twibbon.xml b/app/src/main/res/layout/fragment_twibbon.xml
index df0b146..3d2db28 100644
--- a/app/src/main/res/layout/fragment_twibbon.xml
+++ b/app/src/main/res/layout/fragment_twibbon.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".FragmentTwibbon">
+    tools:context=".ui.twibbon.FragmentTwibbon">
 
 
     <FrameLayout
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
index 121252c..0a04f43 100644
--- a/app/src/main/res/navigation/nav_graph.xml
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -7,12 +7,12 @@
 
     <activity
         android:id="@+id/loginActivity2"
-        android:name="com.example.android_hit.LoginActivity"
+        android:name="com.example.android_hit.ui.login.LoginActivity"
         android:label="activity_login"
         tools:layout="@layout/activity_login" />
     <fragment
         android:id="@+id/loginFragment"
-        android:name="com.example.android_hit.LoginFragment"
+        android:name="com.example.android_hit.ui.login.LoginFragment"
         android:label="fragment_login"
         tools:layout="@layout/fragment_login" />
 </navigation>
\ No newline at end of file
-- 
GitLab