package Ġme . rer ere . rain music . ui . screen . test Ċ Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . material . TextField Ċ import Ġandroidx . compose . material 3 . Button Ċ import Ġandroidx . compose . material 3 . Experimental Material 3 Api Ċ import Ġandroidx . compose . material 3 . Sca ffold Ċ import Ġandroidx . compose . material 3 . Text Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġandroidx . h ilt . navigation . compose . h ilt ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . so y wiz . k rypto . AES Ċ import Ġcom . so y wiz . k rypto . Padding Ċ import Ġcom . so y wiz . k rypto . encoding . un hex Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . launch Ċ import Ġme . rer ere . rain music . data . ret rofit . api . Net ease Music Api Ċ import Ġme . rer ere . rain music . data . ret rofit . e api . Net ease Music E Api Ċ import Ġme . rer ere . rain music . data . ret rofit . we api . Net ease Music We Api Ċ import Ġme . rer ere . rain music . repo . Music Repo Ċ import Ġme . rer ere . rain music . ui . component . Pop Back Icon Ċ import Ġme . rer ere . rain music . ui . component . Rain Top Bar Ċ import Ġme . rer ere . rain music . ui . local . Local UserData Ċ import Ġme . rer ere . rain music . util . set Paste Ċ import Ġjavax . inject . Inject Ċ Ċ @ Experimental Material 3 Api Ċ @ Composable Ċ fun ĠTest Screen ( test ViewModel : ĠTest ViewModel Ġ= Ġh ilt ViewModel ()) Ġ{ ĊĠĠĠ ĠScaffold ( ĊĠĠĠĠĠĠĠ Ġtop Bar Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR ain Top Bar ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" æµĭè¯ķ é¡µéĿ¢ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Icon Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPop Back Icon () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠLocal UserData . current ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĠĠĠĠĠĠĠ ĠColumn ( Modifier . fill MaxSize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcontent Ġby Ġremember Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable State Of ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( onClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest ViewModel . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Send ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( onClick Ġ= Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . set Paste ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Copy ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTextField ( value Ġ= Ġcontent , Ġon Value Change Ġ= Ġ{ content Ġ= Ġit }) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( onClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecrypt Ġ= ĠAES . decrypt Aes E cb ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġcontent . un hex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġ" e 8 2 ck enh 8 d ichen 8 ". toByteArray (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Ġ= ĠPadding . PKCS 7 Padding ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" è§£ å¯Ĩ ç»ĵæŀľ : Ġ${ String ( decrypt )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" è§£ å¯Ĩ E API ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ H ilt ViewModel Ċ class ĠTest ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġwe Api : ĠNet ease Music We Api , ĊĠĠĠ Ġprivate Ġval Ġapi : ĠNet ease Music Api , ĊĠĠĠ Ġprivate Ġval Ġe Api : ĠNet ease Music E Api , ĊĠĠĠ Ġprivate Ġval Ġmusic Repo : ĠMusic Repo Ċ ) Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġfun Ġtest ( callback : Ġ( String ) Ġ-> ĠUnit ){ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }