From 47bf385b05150f860da9eb8e353a107832e76a94 Mon Sep 17 00:00:00 2001 From: ozer550 Date: Mon, 16 Mar 2026 16:51:07 +0530 Subject: [PATCH 1/2] migrate according to new hooks architecture --- src/android_app_plugin/kolibri_plugin.py | 28 ++++++++++++++++++++++++ src/main.py | 14 +++--------- src/taskworker.py | 5 ++--- 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/src/android_app_plugin/kolibri_plugin.py b/src/android_app_plugin/kolibri_plugin.py index 40d8aff8..820226ca 100644 --- a/src/android_app_plugin/kolibri_plugin.py +++ b/src/android_app_plugin/kolibri_plugin.py @@ -2,11 +2,18 @@ from django.utils import timezone from jnius import autoclass +from kolibri.core.device.hooks import CheckIsMeteredHook +from kolibri.core.device.hooks import GetOSUserHook +from kolibri.core.device.hooks import ShareFileHook from kolibri.core.tasks.hooks import StorageHook from kolibri.core.tasks.job import Priority from kolibri.plugins import KolibriPluginBase from kolibri.plugins.hooks import register_hook +from android_utils import is_active_network_metered +from android_utils import os_user +from android_utils import share_by_intent + Locale = autoclass("java.util.Locale") Task = autoclass("org.learningequality.Task") TaskWorker = autoclass("org.learningequality.Kolibri.task.TaskWorkerImpl") @@ -20,6 +27,27 @@ class AndroidApp(KolibriPluginBase): pass +@register_hook +class AndroidGetOSUserHook(GetOSUserHook): + def get_os_user(self, auth_token=None): + return os_user(auth_token) + + +@register_hook +class AndroidCheckIsMeteredHook(CheckIsMeteredHook): + def check_is_metered(self): + try: + return bool(is_active_network_metered()) + except Exception: + return False + + +@register_hook +class AndroidShareFileHook(ShareFileHook): + def share_file(self, *args, **kwargs): + return share_by_intent(*args, **kwargs) + + @register_hook class StorageHook(StorageHook): def schedule( diff --git a/src/main.py b/src/main.py index ce8a5e7b..13e189bf 100644 --- a/src/main.py +++ b/src/main.py @@ -2,12 +2,9 @@ import initialization # noqa: F401 keep this first, to ensure we're set up for other imports from android_utils import get_os_user_auth_token -from android_utils import is_active_network_metered -from android_utils import os_user -from android_utils import share_by_intent from jnius import autoclass +from kolibri.core.device.utils import app_initialize_url from kolibri.main import enable_plugin -from kolibri.plugins.app.utils import interface from kolibri.utils.cli import initialize from kolibri.utils.server import BaseKolibriProcessBus from kolibri.utils.server import KolibriServerPlugin @@ -36,23 +33,18 @@ def __init__(self, bus): def SERVING(self, port): start_url = "http://127.0.0.1:{port}".format( port=port - ) + interface.get_initialize_url(auth_token=auth_token_value) + ) + app_initialize_url(auth_token=auth_token_value) loadUrl(start_url) logging.info("Initializing Kolibri and running any upgrade routines") -# activate app mode -enable_plugin("kolibri.plugins.app") + enable_plugin("android_app_plugin") # we need to initialize Kolibri to allow us to access the app key initialize() -interface.register(share_file=share_by_intent) -interface.register(check_is_metered=is_active_network_metered) -interface.register(get_os_user=os_user) - kolibri_bus = BaseKolibriProcessBus() # Setup zeroconf plugin zeroconf_plugin = ZeroConfPlugin(kolibri_bus, kolibri_bus.port) diff --git a/src/taskworker.py b/src/taskworker.py index b7ae55bb..7e9c66ad 100644 --- a/src/taskworker.py +++ b/src/taskworker.py @@ -1,12 +1,11 @@ import logging import initialization # noqa: F401 keep this first, to ensure we're set up for other imports -from android_utils import os_user +from kolibri.main import enable_plugin from kolibri.main import initialize -from kolibri.plugins.app.utils import interface +enable_plugin("android_app_plugin") initialize(skip_update=True) -interface.register(get_os_user=os_user) logger = logging.getLogger(__name__) From e48acceaa8214ea6b19b47766ee83e9c34fd18ae Mon Sep 17 00:00:00 2001 From: ozer550 Date: Mon, 16 Mar 2026 16:51:46 +0530 Subject: [PATCH 2/2] run linter --- src/android_app_plugin/kolibri_plugin.py | 7 +++---- src/main.py | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/android_app_plugin/kolibri_plugin.py b/src/android_app_plugin/kolibri_plugin.py index 820226ca..e2248ac3 100644 --- a/src/android_app_plugin/kolibri_plugin.py +++ b/src/android_app_plugin/kolibri_plugin.py @@ -1,5 +1,8 @@ import logging +from android_utils import is_active_network_metered +from android_utils import os_user +from android_utils import share_by_intent from django.utils import timezone from jnius import autoclass from kolibri.core.device.hooks import CheckIsMeteredHook @@ -10,10 +13,6 @@ from kolibri.plugins import KolibriPluginBase from kolibri.plugins.hooks import register_hook -from android_utils import is_active_network_metered -from android_utils import os_user -from android_utils import share_by_intent - Locale = autoclass("java.util.Locale") Task = autoclass("org.learningequality.Task") TaskWorker = autoclass("org.learningequality.Kolibri.task.TaskWorkerImpl") diff --git a/src/main.py b/src/main.py index 13e189bf..e134e057 100644 --- a/src/main.py +++ b/src/main.py @@ -31,9 +31,9 @@ def __init__(self, bus): self.bus.subscribe("SERVING", self.SERVING) def SERVING(self, port): - start_url = "http://127.0.0.1:{port}".format( - port=port - ) + app_initialize_url(auth_token=auth_token_value) + start_url = "http://127.0.0.1:{port}".format(port=port) + app_initialize_url( + auth_token=auth_token_value + ) loadUrl(start_url)