🔀 Merge “release/v81” into “master”
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / PageToadletRegistry.kt
index 97e6cfe..651bffd 100644 (file)
@@ -18,21 +18,28 @@ class PageToadletRegistry @Inject constructor(
 ) {
 
        private val pages = mutableListOf<Page<FreenetRequest>>()
+       private val debugPages = mutableListOf<Page<FreenetRequest>>()
        private val registeredToadlets = mutableListOf<PageToadlet>()
        private val registered = AtomicBoolean(false)
+       private val debugActivated = AtomicBoolean(false)
 
        fun addPage(page: Page<FreenetRequest>) {
                if (registered.get()) throw IllegalStateException()
                pages += page
        }
 
+       fun addDebugPage(page: Page<FreenetRequest>) {
+               if (registered.get()) throw IllegalStateException()
+               debugPages += page
+       }
+
        fun registerToadlets() {
                registered.set(true)
                pageMaker.addNavigationCategory("/Sone/index.html", soneMenuName, "$soneMenu.Tooltip", sonePlugin)
                addPages()
        }
 
-       private fun addPages() =
+       private fun addPages(pages: List<Page<FreenetRequest>> = this.pages) =
                        pages
                                        .map { pageToadletFactory.createPageToadlet(it) }
                                        .onEach(registeredToadlets::plusAssign)
@@ -55,4 +62,11 @@ class PageToadletRegistry @Inject constructor(
                registeredToadlets.forEach(toadletContainer::unregister)
        }
 
+       fun activateDebugMode() {
+               if (!debugActivated.get()) {
+                       addPages(debugPages)
+                       debugActivated.set(true)
+               }
+       }
+
 }