package Ġio . github . tak us an 2 3 . pho transfer . ui . component Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . collect As State Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . core . net . to Uri Ċ import Ġandroidx . datastore . preferences . core . Preferences Ċ import Ġio . github . tak us an 2 3 . pho transfer . R Ċ import Ġio . github . tak us an 2 3 . pho transfer . setting . Setting Key Object Ċ import Ġio . github . tak us an 2 3 . pho transfer . tool . IPAddress Tool Ċ Ċ /** Ċ Ġ* Ġãĥ ĸ ãĥ© ãĤ¦ ãĤ¶ çīĪ ãĤ¯ ãĥ©ãĤ¤ ãĤ¢ ãĥ³ãĥĪ ãģ® ãĥª ãĥ³ ãĤ¯ ãĤĴ è¡¨ç¤º ãģĻãĤĭ Ċ Ġ* Ċ Ġ* Ġ@ param Ġdata Store ĠData Store Ċ Ġ* Ġ*/ Ċ @ Composable Ċ fun ĠBrowser Link Info ( data Store : ĠPreferences ) Ġ{ ĊĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĠĠĠ Ġval Ġip Address Ġ= Ġremember Ġ{ ĠIP Address Tool . collect IpAddress ( context ) Ġ}. collect As State ( initial Ġ= Ġnull ) ĊĠĠĠ Ġval Ġport Ġ= Ġdata Store [ Setting Key Object . PORT _ NUMBER ] ĊĠĠĠ Ġval Ġurl Ġ= Ġ" http ://${ ipAddress . value }: $ port / browser " ĊĊĠĠĠ ĠHome Screen Item ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġstring Resource ( id Ġ= ĠR . string . browser _ client _ title ), ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġurl , ĊĠĠĠĠĠĠĠ Ġicon Ġ= Ġpainter Resource ( id Ġ= ĠR . drawable . ic _ outline _ open _ in _ browser _ 2 4 ), ĊĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġlaunch URL ( context , Ġurl ) Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* Ġãĥ ĸ ãĥ© ãĤ¦ ãĤ¶ ãĤĴ èµ· åĭķ ãģĻãĤĭ Ċ Ġ* Ċ Ġ* Ġ@ param Ġcontext ĠContext Ċ Ġ* Ġ@ param Ġurl ĠURL Ċ Ġ* Ġ*/ Ċ private Ġfun Ġlaunch URL ( context : ĠContext , Ġurl : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġurl . to Uri ()) ĊĠĠĠ Ġcontext . startActivity ( intent ) Ċ }