*jfJ#TE)FL?TtbIv0Ed!GCHzAJVjA{*t#
zNlR-(tajr&ZsKa4T;Mm-<|8EQ{-YaULlp`jDvF=2>=GRKs^d*|=zaQzXjN5J|0oDR
zORL9urCC&yBbfmjTH597p#1&cNB=*m(YsAX^S0`NfX2njo*R4T`}R_$n72wIU8hm}
z3Lu&FJbBQ=)!pHhW*vCBt-!C(+?P%}oO@nhs!?2|Gms*cwpb~sqVz$v#@`=1Gv58}
zgW1i>1O1zq=J5xI`;AI5WKr{t(Lb?e2(JB${aJF_+J>`3eJZ>^5us}5D+r($U%`ge
zV-5U-2`^fAuUS&dxMXraaEPF%{XeM?=OFMxw5=w@HgR
zCJ}c)+=t~S|9y>OAj?v|_vH9`;kocPLg6{VCX`Z?IZ}j*_{{)4|2?~V0*4F+Vfdl^uMJhyhcG#~JJxTX+wzM~_Ycgl71
zn7s`%BRPEXvc*j`p;j?J88w`FPeV6>{dlt_CPGE+y|k`=Sa9}YX~_$AlPh+;ndK(RXbaK7-a*
zLA!?V#Qd63$=y^4KSMiLHo}d>eU@8UsV?V~%g@QE&+Q@ulJ%gk#>Yd2@s|`t
zQNY#ECSRq_qw9lsW?EB-ZV~?yUY+ypk@-Q-_hVOiWX>wZF`c!Mw*9EM{^QI~CJd$@
zK*hfjbuMykTlu#>F7J9%mRxY58KG=xDRF5jjA#Q-vVgrN$8EemNNr4{BA7{Arj+pT
z#I5<;j7ssyq=R8t
z69KpmqRNJ_D}})h%(iZg!Ay#cn|E%HpF)Bnb{xM{OtdvfK0BUwynSI$nR@d}cnWKO
zTl|JPi5g+@xFhs+D=fJJTuIH=W44f1R5B5R!mFXvhJfC61BQ>GKobJxNeaR_CSKRJr13qiR^S`N;swd-mU+S(
z-@1s@P}i!0&xfqFrXG)n=$|zBOW8>zg=Wo-B}gm^5KZ%=&iOLf{RpCv~TAR(#CG?w)Jkp
zJ5Rp2&6V{(i!d{!q&c}8Mi#EybOuSj0}@{5h2JkFhqT$hdh+98%kbh3nO?Sx@k{kC
zA~88r_fGUqs}tqn{?b(TnqcV(t?rG5Lzwh!#0&_+enbA$Nn9d
zn+cYGPJA$fA0$ZDXsZe|sXk7Zu_>8dkYhtmUi*2hOeE$D$*|GLSpyW%-)!JUvzvc+
z%%)D4Xy{Fk#k;xqy{pH`)BNSBUTIzR_=ii_Yr-zu3l&G`N+9%lc*91ETflzg$vk)x
z+Bh|nz@te4q{_ebkUR}{+e0F(_qNbDX7$q($+?~t%EW-SIyeQ#U?S;h3@u!g+Y=@J=wMeSK`sa@~)_5E|2U9pcFWa*y>3
zDO}l8T!d@FDY|@DC1`b;Pmh_!vo_Ts$I$S)t_3yHj3bEtW|M^}c~L%@i6P_gpuRmX
zuPzx`20<9=`zNt^$bB>7EInow6=5P`+U@PvGecqa8pK%~93*hr@ZY#glB!DX;lWq-
z8j;=j!K2SpUNrcljo@nhkL7V`hr1aqQ(_3cBqLH`l8lF-Ja{LoJ8#iX4(Np2fs7M4+PguD3_a;_E%Z97&07=vA4Ooz>qD6zlG$gE83^~zG8h;DM#eq({Oa+H
zImPx=bTfyXaJ3CNk>WW?m}wjoqLgXPTo9!e#(cLtm0JOMpR9X$lt=9
z2N>Koi;2nB(i3+2Fgfy|pxI^e@6P~KP$4r`@n|!|LnQml6R^UW*+}2I~4*uktmq8h|K735t
zJqV|PzV=$p0_S;ne$l8gMlO^QysSx4hi{lPWP7alf~2bc48P|_UeX*%uPxk|2Sq)<
z31ucoQ~^(kQY>po>PB|n}jj@wLr
z1vN19Aj~hWhF-EsEzE^cFYNvMiL$CT`$-E8Ah_bY5DEOPI@6bQ06aYF-Yrl$$beg*
zi*?2p-FbFQ(q|vSB-L=iV6a|9q-xK4E9FjW^=64iM#IeZhM)d`Ku*SfN~3CSHX$)Q
zh~|rq5+%#==-;ybzaCmc^wky#bK4P*AprE&w=7W-E)5XFl(XmUkw
z?^7(|_oZf{5N2N{fBqp0Jr5Y3^&svDzTA{{$6u~J`$_h
zGOr>bv{r>bKsD6wG#$=18{G9c4te&P>G{cF|JQjwC96dwJJiR=9`i>>_~L9;FJ%6;
zt1(|RG#YG5c4#8?iI|k-m%kF#Y~(9`H41=#mlC~A%>q9}*CNSXXG#af9PqE`wVRG2
z;T^+)yK1GG&D$F<>Md1Z-)91azAIsc$+V@xpT-Rw=2j>LMPA~s36exX2bpVF81=}Q
z0bO%8uRJtobB~JLzSJiCv@Kle=Qo0+-D+4xdH@+OInyt*FKLg<-LKm!95dXU_2~3)
z^G|bCROy^8M6!!fZ^yy~dbm)7peHoIABS%%)^XpIn|ZQfY@2;iU|d*AJ)U_)pC7Zq
zDEQyzR^D1cynLFhKaL;&S-S`Pw}6=#^hPA+q#>fFes?y&G6`Pvi}f+`SWp~Xe~^Sk
z@hC4E~nL|F&Cx!(@GuZ^*B(D_>Rc>R+?#Rm(lf
zW0j3EuBQ9dkt_s%%d7!}zn$NrTlxkQVU|^pU8|-s^$DoRHbRbg#AjZ@e{^Y%ZQQ$A
zR8ALnIvx27eo4a3?EUlZ(67^ZIW{BcK&gMDCJ`hVG_%RZiY{+vg+h+#uCY&Tm`p<-
zf42k?ch*XNL3Q7xN;pk!&Bm>sfP)7F-yeGXyh~2y+RmgD@F$%b__G}9jRj9Ab}BR!%bODka0ll%o8{@ixTI~RR{v48cu)6*;$i^l2%Q<>af876YK7`cXoV0%8I;n
zdRV=DZS(g`4?W--wCga;sR%fz_FRmcgOMl5TCNC4=0y1&pSu^7aPrC0fy6mf
zkH6S7Iv0PnDXH-0Pkp4QIp5DL=ny=Bgi$NSw$52I0aTJvlPO~JuYboVr+tGdZ$Bvz<%BXf|8Z|;A5&|q2k5?=89OHzu5(h{cN)P*`%PM5P
z8j|*HZ7+bww&t4`NP
zKBo)B#eu8OZ5wW60d70GwnTrq!%`4xq8IAWczLH2dzgr9A$WMP?IzZsy4Tis4QwKs
zLTK_72;@iEGlR$dm@WbH=;0+3wfADTsd?WMh49&gj*Fc|XT1D1XM4nA@TpBuMTU@@
zKTA7ox-|mYbQ_2RF`4I^`gtAa0t>HRe9Rr8Oli@NpJYiwBWib7WRc4Ib^i9%7dx@8
zY|q$P+G6gEhTewjujI6)Z)4l1Up*
z^U?Ekn#GJ$x}cVk{4_Yx-Pt`znX3XI0QDBTu;&80W<7z9bbiCdNlc%Zmg4z_5b_UC
zu){-8D8J(lQfQhjJG$xuCQbO?Cf1OCuyR-C;LeqVta)o7er2hV
zKWP5mv&zk)*kP-Kgb;$Fa#0=||7a`b>XUy?nVaVx7S>(K0^pg}4m~N@$}}{34z>!P
zp1m+v@2YhkGkr2y3g{Vz=^7mRhmt+X1YqM>FhEc~wKs!gSgphoE?cbz;%%7BqYm2N
za0qq2VNh$HbZd+=tM%nLm1w}U3w0;2+`H-~91ExChORvOy
zA`(JfMkoKp++J*CX6}dlIJIkk0+Ak#}?t8!ml2yZ6gGI@FCV(BwB~LjpUD
z;-A%BaPSW#*2w%VtpSqJAd!q>9+}7VW2FM|IlC7$KUE?*gpdnGRV~Jk7yV?+jf{;`
z1~>U^FhAsl4n~G8!6&xg3jbxcN(awI?u$XUYJe#YVGB^#ZoNprn~LF!fVnJ%zEd2z
zwlu`h*nAxv!#L?VU|?wY{(I_+s(ir`)n-z@7vBosoYW<`8@S&lZ<>Z2GJ+ByyFU~2
z^SC4v7Qi4TcVcPM59#biAGN}jbMqIM{mdT3;BCh^X^}#
zMt(`Z#MKX6uus`T)Xr-AbMu&IsBo*R$;r`(F6A@^+1<6K&4~0m5uyUf$w*iUa~J!9umfN
zuyNc8v&Y6sDckqC^?Pb>e*ZQCJm_a!rUY9{y!(KA0Mp+{{1w0crT3%w-*x+m_uU_^
zCoYsrW$};>k7RmIh<0{=68{?wJ|8^;qBRJ;L@gCTQG9w+(THX95?#NmV)w>?A+{D5
zVAm~8^sD$#MKx0#S+cudZuqYN{I#)ZETYG9_n`4Hjaawor_Ku=FEw7guDfr;sBZY~KS
zAt87IdtegqEJ&AuP&w+y&RK(%ietfD^MG~Ut=UGUM?Xc{J1Qt!5jW`W-Jom!`$u7&S9vespw{QBXk6!NDQzy+%XDE{!7Q^aIA8c|9`O^sIv(AM@AFLD@src{RFa
z7UzuQ*)O3PXV)1yl=Xl-AQ9*%`b`dMO~D)A@!9oIu9&2MO6m?T{tlGa4__pZzE&Qu
zu%kZNnppHTjGt`8Z8rWgBkX5=d3hX93}nB(*W-d`hCfV$T@OA{ML-||ywoIJFm`Ch
zZPB1J^bTgQvE{M$JrKG}n-C4StL3D$pJGmy
zozXNP8r6}-z>sn9PK#a0&U{jv3brHw4j=rW0#7Mu#?qeW0+%y!9${)+TRV=9|8@%&
z2u=HUQdT2qIVcQBQzQ~!DT({(mnC38nazjF6}MPYqS2ft6K{rIvuEh}1Z!;7(%mGI
z)sq=laArouAr--}OSb}~Ks2Nj(J
z_)F^+gD7@}NlT;a$+<=6RJ^Umo1V7Fy8{Ei+v=sIBx!}$y%C*ncvHaOp<4ytjrKsi
zuy@bS%;uA~p%Fw3J*ms%;Ih@43!jom2azpr71y7z0|Jz7=`ww=-!2ru@58NSq|u^<
z*x%?4U9|P``*g2(>#>`%oZ7QVBbkcB6yB*U0FS@S$Vfxe|E>k#TD}WX=;@zDe8d;X
z$BB^*`qN_Fyt$FGFU)mNJ->)2`VQCLCH0I3Lk=i95^3MdhoDf95QUvQ
zK;`HE%Ym$fjXR)z74xvhaWjxz2Vd+|wPrsTzY{?D%}as$%~2U6aNvvHqsI4yG-dw4
zRb({r<g&KrT6R^
z#iK=Qg;aa-7#t4wZ4pHc%2a*e=|UU5j(2T|&ZZRaD{QiArVIf5l
zpN{sVk68P9;E>ze$KkQ~;81Qc7!7&d#L4RIJ_wgiIUiW3K@mueI-gOAe=h(=fL8W*
zkouZ+`yFhUld8tJ66EEkt1+?Ev^PB~8{2-7TQGSe{&II&_lc!#egNVQ38YjgxU65MsZ_n*#enuf5gJ6oNsW+zlLBr&cH1Z`IB+$
z@%qUrtAX9q#huz+bswLfPRIYM+~B^uGjX%n6)8-wTL?@|&wV2=XWX2{4IvL<1)9PMY4-?tIk&xug-w<{@x8^rVan)mT7
zx0#8xQz|PZvFBrr9qT#h_@@=N^Jx4Tdb-E>CCs-$_oL(8W8kJV95y>TGHr>~fKYaL}DLFHLq_8374UUkME=L7fx{`N2QQQbCG?&x6
z__V~(@ZKE(kF9gpj}lJT{!KpqEVd6y1-qAyJjaax>X+maJ#+K;_BTv9;80*}5>b%v
z`6G6tx%Gi590Jj*h99iod_ihdZVp1|>{POiKHj
zd+j<7RzACZ4~o;eTSI_je>Os!Tk`Vg+)$;Q#R_X`4^Y}f0PdejXYuyU>ja>t{g+%kFf$WxZ0^tdNJ6%J%slYU
zvQruocjhpyKCYG4VBFmT<4ITOdIX+X(pE!cFn_eFgWun>197I8bzc8c8nMgCCHqTB
zI^Q#IYVdJDnru?cK18JYB@LbCpQSwrq^6>R{&zMCCo)TPqE-TyR^m%f-kR8CTaWop
z{%{y_AAM?H0{7!7dLZtgdt;efR
zD0UEn*9oQ*p_1v;euY60@kLDVyCb&|c6NNYqa3B|98vVb@tB2GO~H}
zfI;N$2)6=*QtX>)d>WX}kk{-$KD_`4d{zT8YAT7F+%3)rQ!?@$HOKr`KG_W#d@jqj
zF1~m76bC_gVazEv-dbG%!eqY_B}fR`h)HrsM@RRan$_>#afSs(G7SQM
zyM-Fl4kSGNv2b^sxzB+Nj~j^BIK_jQ5QizV?!sUx8%J%WanQP!h35M4#p$k2H&w8;
zgNsZ1Xp!mTU+TfZ3fhWiOX4HHKZCTtRQHZ8LVY6qEdkCecc0WycKqV#EUmUucUUKA#fu`yki}%)NS;D6I666%*$-qT
z7tbF9T*fc)T1!Xu`Tw-=bT^^;+Fh4A3SG2xWJ=NcA2u);4R~;Pf)Y;p(a&fx3YgPq
z;e&P7<>h7R)ikd`gRj_Z_d$yp5FyMYk55*Gl(g0i7Y~1tvmMtO6j8y|tfp(JJbLFc
zUJ3!3TEJ}aoz~q@A?gTEa68+p&dGL(p5!p#pfbFlqxDbOG{uh3?stcw?^biyi_Q_%wDu^DFtPtFg8H?=q*rNBK`tV-`q`
z;NW0~{5Xf>jS+$R1`wrMU|N_44cOeg&doUvWvqo0z5eSvFhDJkYOTf^*7rqhP6AYv
z9-1Z8uazAX*mH}DC^yGSbkxN7SG-$fW51DgVw^|4}T~P
zPPKO{u^u}~73-6RfkY87;~C)$%vwbw6_+U^J_uQ)fB)x)9y)a#^y*Mo%DI9(n(UE3
zLX^JAN;PZku6u0#Gym$q3Yws_L5V>TTlnEtMgRAs^M!@y&%6iJz>cGJ{SSm2$?|>J;bNyh@ho@oLxgcwAcYiu_ZljoE8a!f9;4##>gZ$
zyB*{dL)nvFon-)>gAS3+E@uPrM@@h5-E5~9V80P~fCIzkk1Z#NPSq2voO}#GoUz
z;|Z!eFeZ_3aXfL0{?s1q60-8n2)gvN^gT7methk6_?DeGZ^9VbYkk{9($&_HAP?pn
zJYE~HXD9)+xJcv9A3pTMyeYLe*D}k>ME+-M1EsnHjQr}iH*JX^51~u9K;oE1i@kjf
zFc1=R^gtTgnEBs+>dLw){GAz7gK^$u9lVpoAi3
zF3j4b?{pS_IVd0uLh`RKaACaY-m0A$i;=wagL=Bh?@QjEN&Yf|5U73dE>&E3u&T
zZ=j2EbDPR-y4^<%jpwJl`d{aBPJZj*LkH1?38dL6A#p)z0ULRpm*>u-jaFfcHsB}|
zphF7j3BJNV@A$Y$)tVbxG{aw$H4bwKlvU-CE*=y{%7Fd&W1y|V>X#Q+O2K!+rg|g4
zVDGh1(Dm%1m+*kK%*Bv9K+xgm*@x@L6NOcIe+D)qU&jQ$e*Zwll^yz@$5asxytsW?
z^0A&yMXxNU6e@P{MW((4Ohu~m6Y$PW{RuOFtgruyUPqo59)iidtVeL6-rW5~Vr=Ha
zc(-Qh-H+HBw~2B>HxOWYG&cPB!C-6=?9+ApTV0($Trm=cQh3cM%)pp`T*pfZ)71tu
z!80!^aWu*Z6BR&N1i8&$>~R}NR8axbtI7`PE+Vz=^UBWCzZjXGxkHM7ZQQytUi^Yu
zyD@L@=OuX14ql;-m^WW0DF?gHQ&YJjBiQd)Yk0(6#xrSkXEupTz8BM=`J_
zP{LowGn|xK{II88>HG4zgEg*q{q)@L#X|a&k*s0^6!E|uf~bjR0S<0lC-@c{e9#t%
z*EL`#`;a+p5w)?0;<1TL{VY=L!bWD>>$!B^x!5PS+t!G`XtZ8vi)NN`WzWyg*9F5X
zgM<1EjEtEX89=ioO-Lg=_4~acasHTvPuZrYQ(iinC2r2n^2L|1Z^?=J+@LoJzSya(
z?d?gz!ot>ecQtf$sDIVg4opl$hY?dRBLQ2j=y|$4i
z@|BHlkzLQ$W#@Thi`Xe`Hq(_U9w!3=sZeB@{Nv9=Iaj^6JPXH*M+y`e0RRyg7^o??
zW>XQ#8Nk2HNT8vm`RT1^ywTXk2uRSH7eRxEys9mlK-W`tkf1Rfs?UWUlq+T!Fv63y
zy??Ad3|gb(h)x#eIb9&mroV2$$US;dbra~ITFRQb(kFLAuAy`p4m0S~+P@z>i2uOq
z>d=g6DVOG!qHvvwb=P{cxa@oj{erTLR|v91fSLkvTU~E@6oVw5X+iew%(&3)sXg?wpJ>Ufgw|AR%@^z0Z*7^_-2RX;0Ym@y><5jx)
zTdB((y<4%(_q-KP(-xPp*>!!a7h`lC_(fBQ7u0eG7DRf3_Yjf{YS*p*IPUn-TLP|GfPw?2)j{&>&eeXpg
zKp%|$<+RUOZYP9^iHV1qV#P%TS@%k3Du4lNW{sR+V=zEp)y4N!N|!=yXv@wX
zvxOu|It%pz_ycbg5$Qq%VHvrKBqNa{KfzEw>&4D5a#5IqL>IOGSlMoIt*Ft=#y@&4
z1N8Bf{fgHMJD}+Z$@yR4x$=7A{f{KM_v{s&1=$ifUcZkYvvl7y@|HhNzB<-5zYPHj
z*Xh)^<-QC?&rK)%NP1I*i4i|JQl36Eq|jxVVO>4ZwC=Sgl+fctFs?5
z%9>NwS1|=5vDTg4nNyXgok|filb_#~Q=OCT+ZukI*mEN7#xwAq)nxq_zfFu1a--j0
zM#Zdz9TDzzdQ^z%zi9<2d$F7%rhjcYeJ91DW1iv>7KT!a|4g|~jwoY8_6CJ)WoJ2K
z55Wq)u3INhmP;u^8ETCeTmPkgS{r=DlGi^Yx2yW2LJUlU?L_(dKHvTF(zdYf?wzQg
z5@OpkjiS!542+d21@r(cT>i$=xBFj#IAbBQZ)J_YQa8^^!s#roA6KAYNMZ{l*6WrkyIG5cwj~Q{&GiV|M7<#wn3-i9b
z?xV1Q1egaiZVMXQf`kkKKeJXxjKz%1bFQ_e{(EZMKil=LdFQf|4OBXZS7{dQ=vJV$
zkBBA}ZiR$|D1~Tuy7
ze?5Ntr`6&Ve~_|fQZF0E`!2<&$UN?{5o@E~Ee>EScMJ;VPx<Ex-OLPwiD09dX;k{U{O+RV;&gG5%@s8>@_xS@p1Q|!M5J{+2twjAKH9i-`4|eG
z?y>p{2m_(+J3bg$Z-TL-?ObciM(pUFIxwVaj#S`gnL3V}Vsvop>;sFQ{AL?sQ!cHn
zB+TpZW;{@yS<->hN*j?TkNj
zxPL2Ul|aXx&bX^|q+CD{_j9XDLav7kk+d@jcj6=(B}63me_Kf6UVv7)
zhG!l@@Aa~2T%b>E3TzdnXIbS$5}6~
zE+F)>gG3{S;!jG1q0{(}QV43wvmX;f_ixQ2}2
zwS@XD9sVeebTtN0%XxNz6$PYTkRRi^2pX5yjMd1&yy9UIkoc7r!4jvWzahc9^^x1g
z7TaCnjUO-gzQmlgkQJQ5qug-TXiR4`Qd|~1!mkVT(6=-MBo;u-?3O^io&u#)H`}wk
zFEb;rzgS$}dP&jq+^oRZdeyjbqf5W>q*y;^!
zUpnRSrvPu|?Y~Un3*^ceD5iI5=r23JPjKQ1Km2RP9F`IVBC#cpGFbH^hC_U#ii<5
z-=43wDP3J*=rU_PAu5$3J~%5(&SN29zg^tcIMN&WIe0JK*u1%NxmyHun&14)&=IS)
zCa%0=k-q=T{Hd%R(Mvm+qs=5C7;_Z>R5x}Eg7dJU4--JxpC1vAe@oF
zIoG+VEA?sdsMHTI{&L46zH;_5UIog@ovk{#8xrZ#ol+|~q%;6F8P}b#q_Tb**Z8;4
z2R|B*e0VuDa5dhYv#`G=thpVckkRqHMj%Eh>OH+;Se4ezY7+|?@$ga5J1G9_s{Es3
zXyg|S&Gy!R-!{LzRHmY=G2^H+6NL!!1$As4UyyHo!nbgqR(-&h?dN<2%T^9lZ`0@&
zxx5PYy~ZWUz=b8m__wl*bKZVgTfXLhZ0KBr_4IDUmQNb~F`X7_jJ*T82kFKZKDD<1
z)ONEcwr-vx>Pahl_~P{G2}_xy+sY3>D>nA$gx6?TG>j)_DH0oG&$JqL?Is&HkyiW8&>MP
zTptIQU-!0JT)4rov|nCQLXyGqxL8pjuUUt+uT3{Xhl>3T$XN9+r$Swf&7)_IH>ZoW
z`_@6+G+A6n7r0y9`nX#pGCT$?o))d6>A0YPA1_4S0WvY~Ixm}fk={q3>Iivo|82)A
ztSz3B3h@Y&IIS;9t5l@KK|BAY^96{9w(53dw;GnOrSl~cftYeUxckny|FjSD)UT24
zjT_MtrowYJnW#jZO0kqG_kGtb>DY5wO^RHn+g5R`V(E@V^)kB`5S5
z768;#1*+HggnY&n$LG~&+55iNh1N&Dcjt+h_mX%v8FBvY}Zrr%R#XFPhN&sMw
z8yfv?(F1@et6FE*`!&qvt{zy7zzpW>`DK?GstT3`{y+7(UqsZd@4b1DGat9n;n%N3
z^TY0v+#;v|v<%5$a4WfL;T}r7>XD&=7}4Jw3<8UR^`;iHxvr}B_4ZDS*yfTromDAd
zkrn}@SMS$gj(=mh8_da*f(5}A?lfjXb*K|QbX!wLoU8F_6t{A7<8ZIW<7I~0
zePbA*ZV=%QV0VfkzDQ!)zIp5>>=>K=kd)FZETjF3sOwPGjSxI$(>Y@-G
z8*(#T2|O`vu%ueJ>j0q^TG|0)X!}llbLTo&sm}1+?)UVtNz<8*o=n%O{E%nLy}kB<
zOSC@}4oFmmqZSCsb;~UwF)RHV^Jy}=*pRA%k8LE8BBlOf=TgoHx5xBg2uZ$GlC=>4
z7`?ClUjPqjom-W}-TRB@Vt*e$x#otYuRM#B!rjVnuYqTSAp-91-&}}CtTsO@0O-ln
zO$8cEXP({SMc~+CPea(JVo#Ibnb(hsO(SP~HUXezRpshV1DM>ry5jJPMGQ<{ayUMC
zpuX|-^yInysy4;Wcxdw-Q{lY<4d$tGLQ%Ru_s>4<8SP7BgASAf-H;NJle1DLi~S0?
zKP>;%lyefaDY-KqMq28yGeGsO?^Q&Id5nbiJ{c(E+03#1a}~>!w6Yxf{%zOE&=4ef
zlad47|Gwq%i`B%2_s5`q?*DVkqkk&v8t}~ucuNwSd7U{d>~CNo?e_Y;9~JZiC%)m-
z9Lg{7A>pUnD!DZ*1MyT+xCxf)kix>$(AhXN%<2@gXsQd=1ITRmrz^=^m0Ambr6MMw
zEV~Zy&OZztuP(e!kp9t~&X*y1@d8~J$(^7>CC>?tqbeu+7rz5udf^p37Gw=k^x%|C
z*3ou7Dq754G{t(RD0NYQ_kg}Ka}scQL}$?GZc#5|Y;V($Ng9aHU4+tMOMj9+R-TbD
zh?x4xr~9gQ3PbQ3Exi53k97sTB0jN3l=nqUlyVIP5bVp_pz
zz<`||R>O?)?OJ>26a?adgYXos&Aq0!BwA92d&h)}^&v>-IAqhzjFdwp$ahP^;8M`f
zhq(~ZE-iFybh?F^z-E}K9t|y7h=f06W;4I}5wRk|ii(Q#Zw{NT_>>gxMxCBW`_^)&
z{w1l#c}#fy<)Yk`>Foinx;Ft&81O`_0wO^0ZDf!9dQZhfk$GAszu(t#+DS4&kM4$3
z_d&~?0z6e$8a3H1kKJ$n_T(Q__KDRcv1LDyEpHo~u>xRji-zO%5*GsTv6J9lZrN?1
z5YcqbNKU}OxSby}nUfx;HCeUz4~*pb?XyEP-z4hp+4tU-H&vi-VM1+)u_50I5A<)H
zU2rA0{Rt`ip)`(p+yUl)WHrk;QqSExe6_wwkn3s=YQakT;cM
zd(^(TKYh6?#+DeS$e-I*!j~2cd(F6S-XNqn>L!VeUc8L?^gwg`Sq!C;4c*lpq~xGv
z;U0Cxd2dM)h+3{M5rY2~g&K^3k(iMYFTL#bWa=leh1?H9UiBSk*QAmFMmWx5+qv$U
zNW1IW_DqAqsN3O*IIoux%4`nS1k1ipuhbssnZndya8X8=v%<38-MoKFKWJgnC
zJB_JA!rK*!zH-W{&e%4k&EtPp(+{xmOR@#^g5wkoH-crNhxc+r;!l%SuQsgxwV#}3
zr4Df7L~$GZev)rI(4)>p_bM}Y?Xd**m#d=rnp=|;m21b=Z8;q-vk
zPGZ>Fxj`^x^yGB~)o#0w%cSsi(YcMr=#I)+Dr(vls1Ib7lxuqnXq8z=Ys>FT6R&oikvdTJ6tzW*@Pgn062-CPfO4;Zf
zdLQSP`TQ1l16TM;g+4BHDZO!{s^i?cK15;$!`E{_44OUpu&YJ4D^7v;z{V#4!a?Ck
z7=v0^tm8=?z%s&>rFdV0f`?Vz;BY>nfqqZ9-5{u;mIXOdL%x`$a`&>}p#R>TD14rC
zo7OTVNoN3dRLCms?6U$c+ygi68nSi#_yZ_ZODMhn)yrMb;_AkS)GwELmoZWtR8(zW>Af%llmS
zPtSAR=X37++~-{9x}S4CC%DH+;E|r)NuGOHgD~sf&*k-ke%t3Gbb9}kpcNl@D~xRVp&99I)95Nb!9GjkG?&{cs{Z&`-jp#W{e7J
z3+>^ALj2J)PCj84KoNMj!1=Tclykfi%XCtdwNTJH{jXG36z=wtS`pRxD^F&ndo
zZr=}-lE1Jw$++N}+tx1gK_w&dZ7=!zoNAYgV2E(fp_G&0Rk
ze9Ep{3+fM#%%G^;*Veo`-S)TVUbY)4xTu9meu-kB{&`#>O}@#{O^Tu%$
z{K;E#FP8=E?}XE$
zl!%HLZ)BU&VY+U~qsCRFvW1
zOk*m$v5mswA#%CezErws%Uh}Je&1_rH-2+%zx=+=c670L1^Um??eZ;%>o^zO(ptLU
zt}7c~Cze={CYsnheN>W|pV;o+x*>(&UJ65)yj8{5eN=B%E`~?PKY)tM)re6yjV4od
zhT}?S4R#7=e@@&V{&fDM5AHOS0#&Qn#g|8ko?TK^pBB$WD(CBQ-ldp
z%YVAA-M9Lkp#+oG
z6{gb)^{{h56?=L3K`|K}t;*v^+pr0v3GOq(;-OoE7S`Ok*788eL74cHz;MpJ{>%9-a^
zRLWolFhz)PfZHQST^*m^E$x|SRPtOPR}XohYkLAh~l!#ecQ52DTqEb(-P|en;<~ne$R(c#7!5m8zQM5hR(%AA!xnHYi
zc2&ve8;s|!Qf++uwCV@+NQclLjiIgI8@jff;|Np&Ogy9qDjve?DL?rKgO!3ExQIR<
zp7^7OCzZcWlW+Nb)^NuOmJX6tBP!IPChbChugUjFJ?}31a_lJ_>|EjJGfD~o!^yqi
zi?QYoqYszI8m|y!Eyp_*kJ6`r04YMW40~T+LS;wX<^nBmOhsTwwkNpV2h@n
zyJ7CW^KWq^_#^;J(jGVx>TdZd06Oh#lb(B)R+tI0+w190#B1j=4W$O}_G
zEhq@2KSb-DmP37jHHbfyd-9i2@b?6}z=1{8R2OLnpH_7&MNt(B+C7%eTx?>mj&!i5
zr`o=BTaP{ftbYHSo{AQi4L@GF{G|vf#V(Q`(YlMyi#0d!`u!p{+D%w^3OMqemhUn7
zV$61O#5j^Y_u-otzs7qCRoWUd{3m=Gf-)!5bh=_lBpr=OpDS*zgKJrXCv?(kbl)->
zCMo+2)?k{(pOr4*!3u$4w++(7!b6+}eJBO4X3LJ$V19j${`_k&RsU=iu_WV|o;GvW
zK&P?}XjY`0rHx@{+$3>74+OjJ-M_{IK7d8XBluL_g&H11=j~8`ozx7{iA%MdIR6Ey
z{w;VOb-CW~r|)<~qt;G_NzU-wroJ`!F`WO*g-Bw|mLlGsS;aj)m1Y=DTcXuL6~(2^-+r+5GyzhHGQjuTbM#V}tF{9WgKRK?hI3
zz{A3I_5I@DpzjtB@<+W|
zrK(sh7d^_1F}PQ{`phoyHriGZbVMxh-~Gtf>)<%W2Ed_gh~bT+001;h5h}7lL)32~
ziT{6IDGPd}&+A9NF@^!mlZ!*1#>dm*1QY;J=Jl}5=nLXgiiLxYe-ejJ=08ceD|a0L
zyF*ErpC~A^0-#-lKD<7`nSX?N866`6KuT24(l@s6&F~y{KQtuorh?!aNf<#2fD>UH
zAWTm6YBD+2wjorAI^+8qoXY{AYJNoCG{Dw0KH^IP-<#^DG3j?NCJu56Zh~9OZJFk)}v6B+z9Owf}
ziEyGxT~FWrDQ95kQ53)S^qfpjO@?ULsq3IwHWpuCnRPaWh6XlCnx)nWzCrV)B{2je
zaHjzH`K%?E7MWhy{#Rct?9IKs&$-^hTmb?mUNF1`{9F<6lMm7=ySLLlMcX>c*Ks+i
z=#n~xF2y>CNdB%2;#mQ)aAMO}RcGp?cLE`~sMOIc>{P1cxhn5_T{Zi8H^DnFW&){=
zv@J~6sSkp(LhSsrRxb9cUxjs^Pu61{4GtpaW_NJr3LrD%77UM1OXdn_OWXq%`%mB`O2Ow{>6Oaifra?$r>s!YIl{NQh0tuG@Db`y7UduW?9PKq<)qNZ|sIe=+i+Pf!x5*re
zks{Da@!bPViT%F_jvUix^Cu{K(G_ODwRNZmt-
z&g-gR4slunQ76RI&jo%L(n+c&jK7aZJ~lWWZJu554Gr#Z=FfPDwCxfBId4zqpYZ=1
zvQ!atQnrgLUy><{IE|o^a4KXLp@_GY{qQB&QkLaJsG`gsjXDY3*cq8OEq;zS4jbcJO?Z?kH$WqIj8;lsp
z$5R-O3IN4)ydFh6lR`FY+G9S#;R2}RO6GSMf5aOo!To8xr^CUrG^xa`KW7DxT|)mONetD&nF!_z~kbdr2N70LR9
z;^IO3x?Dlyj6bAJBIRbD+Lcj!#=CJ>
z7q#>CaR$L}*=4zM((2^DtigN$7L(*JSxV?Xz>vpcSmGpRUxuu1wysc3cI?6O*=&C1
zSC=8#NLogkkbV6p7>Ai_SJzw$C?MdMRno^4;bX$ieLA?
zkrVDzm*FsvOMN#44l4i)j0e&q-D=3Q@SRo9T;1m9i{4K2^OW_O8EB&gGN+h*Q{(gQ
z&WePi<+G@?-R9GCgQsY`%y)|5#d}5~x}Ljs`pnw$AU19hu3Ut5x7C<1tBuC(pBdWT
zIllFD-VA0JOfrJUb;3#NRp)9@iA{typa4g!%6adva$w{KPQf(NRK)ipa0e{G=8ywB
z@)+uV{KN{`aC;ZDCGoFeVHba|kV5v&9M@GJ@SvIFFVOWu_k1UK(UAwCQxk-7d!{G8
zzIqpmRgjDuASGp+#MpIZK&MTK_f1$-gu{}mFi*!1xs~w3h1-ST|LjQ}WWg{*6*^8?
R!sb7aOD5NhE6!sg{s$NGhf)9l
From aa498360db90350f2642e6320dc55e7d474df1fd Mon Sep 17 00:00:00 2001
From: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
Date: Mon, 29 Jan 2024 15:11:28 +0600
Subject: [PATCH 031/212] Move `:core` to `:core:common`
---
app/build.gradle.kts | 2 +-
.../eu/kanade/core/preference/CheckboxState.kt | 2 +-
.../core/preference/PreferenceMutableState.kt | 2 +-
.../eu/kanade/domain/base/BasePreferences.kt | 4 ++--
.../base/ExtensionInstallerPreference.kt | 6 +++---
.../domain/chapter/interactor/SetReadStatus.kt | 4 ++--
.../download/interactor/DeleteDownload.kt | 2 +-
.../interactor/CreateExtensionRepo.kt | 2 +-
.../interactor/DeleteExtensionRepo.kt | 2 +-
.../extension/interactor/TrustExtension.kt | 2 +-
.../java/eu/kanade/domain/manga/model/Manga.kt | 2 +-
.../interactor/GetSourcesWithFavoriteCount.kt | 2 +-
.../domain/source/interactor/ToggleLanguage.kt | 2 +-
.../domain/source/interactor/ToggleSource.kt | 2 +-
.../source/interactor/ToggleSourcePin.kt | 2 +-
.../domain/source/service/SourcePreferences.kt | 6 +++---
.../domain/track/interactor/AddTracks.kt | 6 +++---
.../interactor/SyncChapterProgressWithTrack.kt | 2 +-
.../domain/track/interactor/TrackChapter.kt | 4 ++--
.../track/service/DelayedTrackingUpdateJob.kt | 4 ++--
.../domain/track/service/TrackPreferences.kt | 4 ++--
.../domain/track/store/DelayedTrackingStore.kt | 2 +-
.../java/eu/kanade/domain/ui/UiPreferences.kt | 4 ++--
.../presentation/browse/BrowseSourceScreen.kt | 2 +-
.../browse/components/BrowseIcons.kt | 2 +-
.../category/CategoryExtensions.kt | 2 +-
.../category/components/CategoryDialogs.kt | 2 +-
.../library/DeleteLibraryMangaDialog.kt | 2 +-
.../library/LibrarySettingsDialog.kt | 2 +-
.../manga/ChapterSettingsDialog.kt | 2 +-
.../eu/kanade/presentation/more/MoreScreen.kt | 2 +-
.../presentation/more/settings/Preference.kt | 2 +-
.../settings/screen/SettingsAdvancedScreen.kt | 6 +++---
.../settings/screen/SettingsBrowseScreen.kt | 2 +-
.../more/settings/screen/SettingsDataScreen.kt | 14 +++++++-------
.../settings/screen/SettingsSecurityScreen.kt | 2 +-
.../settings/screen/SettingsTrackingScreen.kt | 4 ++--
.../more/settings/screen/about/AboutScreen.kt | 6 +++---
.../screen/advanced/ClearDatabaseScreen.kt | 6 +++---
.../screen/appearance/AppLanguageScreen.kt | 2 +-
.../screen/browse/ExtensionReposScreenModel.kt | 2 +-
.../widget/AppThemePreferenceWidget.kt | 2 +-
.../reader/settings/ColorFilterPage.kt | 2 +-
.../presentation/util/ExceptionFormatter.kt | 2 +-
.../eu/kanade/presentation/util/TimeUtils.kt | 2 +-
app/src/main/java/eu/kanade/tachiyomi/App.kt | 4 ++--
.../main/java/eu/kanade/tachiyomi/AppInfo.kt | 2 +-
.../java/eu/kanade/tachiyomi/Migrations.kt | 4 ++--
.../tachiyomi/crash/GlobalExceptionHandler.kt | 2 +-
.../tachiyomi/data/backup/BackupNotifier.kt | 6 +++---
.../data/backup/create/BackupCreateJob.kt | 2 +-
.../data/backup/create/BackupCreator.kt | 4 ++--
.../create/creators/PreferenceBackupCreator.kt | 4 ++--
.../data/backup/restore/BackupRestoreJob.kt | 4 ++--
.../data/backup/restore/BackupRestorer.kt | 2 +-
.../restore/restorers/PreferenceRestorer.kt | 4 ++--
.../tachiyomi/data/cache/ChapterCache.kt | 2 +-
.../tachiyomi/data/coil/MangaCoverFetcher.kt | 2 +-
.../data/coil/TachiyomiImageDecoder.kt | 2 +-
.../tachiyomi/data/download/DownloadCache.kt | 10 +++++-----
.../tachiyomi/data/download/DownloadManager.kt | 8 ++++----
.../data/download/DownloadNotifier.kt | 2 +-
.../data/download/DownloadProvider.kt | 6 +++---
.../tachiyomi/data/download/Downloader.kt | 14 +++++++-------
.../tachiyomi/data/library/LibraryUpdateJob.kt | 8 ++++----
.../data/library/LibraryUpdateNotifier.kt | 8 ++++----
.../data/library/MetadataUpdateJob.kt | 4 ++--
.../data/notification/NotificationHandler.kt | 2 +-
.../data/notification/NotificationReceiver.kt | 4 ++--
.../data/notification/Notifications.kt | 2 +-
.../kanade/tachiyomi/data/saver/ImageSaver.kt | 6 +++---
.../kanade/tachiyomi/data/track/BaseTracker.kt | 6 +++---
.../tachiyomi/data/track/anilist/AnilistApi.kt | 2 +-
.../tachiyomi/data/track/bangumi/BangumiApi.kt | 2 +-
.../tachiyomi/data/track/kavita/KavitaApi.kt | 4 ++--
.../tachiyomi/data/track/kitsu/KitsuApi.kt | 2 +-
.../tachiyomi/data/track/komga/KomgaApi.kt | 4 ++--
.../data/track/mangaupdates/MangaUpdatesApi.kt | 2 +-
.../data/track/myanimelist/MyAnimeListApi.kt | 2 +-
.../data/track/shikimori/ShikimoriApi.kt | 2 +-
.../data/track/suwayomi/SuwayomiApi.kt | 2 +-
.../tachiyomi/data/updater/AppUpdateChecker.kt | 2 +-
.../data/updater/AppUpdateDownloadJob.kt | 4 ++--
.../data/updater/AppUpdateNotifier.kt | 2 +-
.../java/eu/kanade/tachiyomi/di/AppModule.kt | 4 ++--
.../eu/kanade/tachiyomi/di/PreferenceModule.kt | 6 +++---
.../tachiyomi/extension/ExtensionManager.kt | 6 +++---
.../tachiyomi/extension/api/ExtensionApi.kt | 8 ++++----
.../extension/api/ExtensionUpdateNotifier.kt | 2 +-
.../installer/PackageInstallerInstaller.kt | 2 +-
.../extension/installer/ShizukuInstaller.kt | 2 +-
.../extension/util/ExtensionInstallReceiver.kt | 4 ++--
.../extension/util/ExtensionInstallService.kt | 4 ++--
.../extension/util/ExtensionInstaller.kt | 4 ++--
.../extension/util/ExtensionLoader.kt | 2 +-
.../browse/extension/ExtensionFilterScreen.kt | 2 +-
.../extension/ExtensionFilterScreenModel.kt | 2 +-
.../browse/extension/ExtensionsScreenModel.kt | 2 +-
.../details/ExtensionDetailsScreenModel.kt | 2 +-
.../migration/manga/MigrateMangaScreenModel.kt | 2 +-
.../browse/migration/search/MigrateDialog.kt | 8 ++++----
.../migration/search/SourceSearchScreen.kt | 2 +-
.../sources/MigrateSourceScreenModel.kt | 4 ++--
.../ui/browse/source/SourcesScreenModel.kt | 4 ++--
.../browse/source/browse/BrowseSourceScreen.kt | 4 ++--
.../source/browse/BrowseSourceScreenModel.kt | 6 +++---
.../browse/source/browse/SourceFilterDialog.kt | 2 +-
.../ui/deeplink/DeepLinkScreenModel.kt | 2 +-
.../ui/download/DownloadQueueScreen.kt | 2 +-
.../tachiyomi/ui/history/HistoryScreenModel.kt | 6 +++---
.../kanade/tachiyomi/ui/history/HistoryTab.kt | 2 +-
.../tachiyomi/ui/library/LibraryScreenModel.kt | 12 ++++++------
.../ui/library/LibrarySettingsScreenModel.kt | 8 ++++----
.../kanade/tachiyomi/ui/library/LibraryTab.kt | 4 ++--
.../kanade/tachiyomi/ui/main/MainActivity.kt | 6 +++---
.../ui/manga/MangaCoverScreenModel.kt | 10 +++++-----
.../kanade/tachiyomi/ui/manga/MangaScreen.kt | 6 +++---
.../tachiyomi/ui/manga/MangaScreenModel.kt | 18 +++++++++---------
.../ui/manga/track/TrackInfoDialog.kt | 10 +++++-----
.../eu/kanade/tachiyomi/ui/more/MoreTab.kt | 2 +-
.../tachiyomi/ui/reader/ReaderActivity.kt | 12 ++++++------
.../ui/reader/ReaderNavigationOverlayView.kt | 2 +-
.../tachiyomi/ui/reader/ReaderViewModel.kt | 14 +++++++-------
.../tachiyomi/ui/reader/SaveImageNotifier.kt | 2 +-
.../ui/reader/loader/ChapterLoader.kt | 8 ++++----
.../ui/reader/loader/DirectoryPageLoader.kt | 2 +-
.../ui/reader/loader/DownloadPageLoader.kt | 2 +-
.../ui/reader/loader/HttpPageLoader.kt | 4 ++--
.../ui/reader/loader/RarPageLoader.kt | 2 +-
.../ui/reader/loader/ZipPageLoader.kt | 2 +-
.../tachiyomi/ui/reader/model/ReaderChapter.kt | 2 +-
.../ui/reader/setting/ReaderPreferences.kt | 4 ++--
.../tachiyomi/ui/reader/viewer/ViewerConfig.kt | 2 +-
.../ui/reader/viewer/pager/PagerPageHolder.kt | 10 +++++-----
.../viewer/pager/PagerTransitionHolder.kt | 2 +-
.../ui/reader/viewer/pager/PagerViewer.kt | 2 +-
.../reader/viewer/pager/PagerViewerAdapter.kt | 2 +-
.../reader/viewer/webtoon/WebtoonPageHolder.kt | 10 +++++-----
.../viewer/webtoon/WebtoonTransitionHolder.kt | 2 +-
.../ui/reader/viewer/webtoon/WebtoonViewer.kt | 2 +-
.../tachiyomi/ui/security/UnlockActivity.kt | 4 ++--
.../ui/setting/track/TrackLoginActivity.kt | 2 +-
.../tachiyomi/ui/stats/StatsScreenModel.kt | 2 +-
.../tachiyomi/ui/updates/UpdatesScreenModel.kt | 6 +++---
.../kanade/tachiyomi/ui/updates/UpdatesTab.kt | 2 +-
.../tachiyomi/ui/webview/WebViewActivity.kt | 2 +-
.../tachiyomi/ui/webview/WebViewScreenModel.kt | 2 +-
.../eu/kanade/tachiyomi/util/CrashLogUtil.kt | 4 ++--
.../tachiyomi/util/lang/DateExtensions.kt | 4 ++--
.../tachiyomi/util/system/AuthenticatorUtil.kt | 2 +-
.../tachiyomi/util/system/ContextExtensions.kt | 4 ++--
.../tachiyomi/util/system/IntentExtensions.kt | 2 +-
.../tachiyomi/util/system/LocaleHelper.kt | 2 +-
.../util/system/WorkManagerExtensions.kt | 2 +-
core/{ => common}/.gitignore | 0
core/{ => common}/build.gradle.kts | 2 +-
core/{ => common}/src/main/AndroidManifest.xml | 0
.../core/security/SecurityPreferences.kt | 6 +++---
.../tachiyomi/network/AndroidCookieJar.kt | 0
.../kanade/tachiyomi/network/DohProviders.kt | 0
.../tachiyomi/network/JavaScriptEngine.kt | 2 +-
.../kanade/tachiyomi/network/NetworkHelper.kt | 0
.../tachiyomi/network/NetworkPreferences.kt | 4 ++--
.../tachiyomi/network/OkHttpExtensions.kt | 0
.../tachiyomi/network/ProgressListener.kt | 0
.../tachiyomi/network/ProgressResponseBody.kt | 0
.../eu/kanade/tachiyomi/network/Requests.kt | 0
.../interceptor/CloudflareInterceptor.kt | 2 +-
.../interceptor/IgnoreGzipInterceptor.kt | 0
.../interceptor/RateLimitInterceptor.kt | 0
.../SpecificHostRateLimitInterceptor.kt | 0
.../UncaughtExceptionInterceptor.kt | 0
.../interceptor/UserAgentInterceptor.kt | 0
.../network/interceptor/WebViewInterceptor.kt | 2 +-
.../eu/kanade/tachiyomi/util/lang/Hash.kt | 0
.../tachiyomi/util/lang/StringExtensions.kt | 0
.../kanade/tachiyomi/util/storage/DiskUtil.kt | 0
.../kanade/tachiyomi/util/storage/EpubFile.kt | 0
.../tachiyomi/util/system/DensityExtensions.kt | 0
.../kanade/tachiyomi/util/system/DeviceUtil.kt | 2 +-
.../tachiyomi/util/system/ToastExtensions.kt | 2 +-
.../util/system/WebViewClientCompat.kt | 0
.../tachiyomi/util/system/WebViewUtil.kt | 2 +-
.../kotlin/tachiyomi/core/common}/Constants.kt | 2 +-
.../tachiyomi/core/common}/i18n/Localize.kt | 2 +-
.../common}/preference/AndroidPreference.kt | 4 ++--
.../preference/AndroidPreferenceStore.kt | 16 ++++++++--------
.../core/common}/preference/CheckboxState.kt | 2 +-
.../preference/InMemoryPreferenceStore.kt | 2 +-
.../core/common}/preference/Preference.kt | 6 +++---
.../core/common}/preference/PreferenceStore.kt | 2 +-
.../core/common}/preference/TriState.kt | 2 +-
.../storage/AndroidStorageFolderProvider.kt | 4 ++--
.../core/common}/storage/FolderProvider.kt | 2 +-
.../core/common}/storage/UniFileExtensions.kt | 2 +-
.../common}/storage/UniFileTempFileManager.kt | 2 +-
.../common}/util/lang/BooleanExtensions.kt | 2 +-
.../common}/util/lang/CoroutinesExtensions.kt | 2 +-
.../common}/util/lang/RxCoroutineBridge.kt | 2 +-
.../core/common}/util/lang/SortUtil.kt | 2 +-
.../core/common}/util/system/ImageUtil.kt | 2 +-
.../common}/util/system/LogcatExtensions.kt | 2 +-
data/build.gradle.kts | 2 +-
.../data/chapter/ChapterRepositoryImpl.kt | 4 ++--
.../data/history/HistoryRepositoryImpl.kt | 2 +-
.../data/manga/MangaRepositoryImpl.kt | 2 +-
.../data/source/SourcePagingSource.kt | 2 +-
domain/build.gradle.kts | 2 +-
.../domain/backup/service/BackupPreferences.kt | 4 ++--
.../interactor/CreateCategoryWithName.kt | 4 ++--
.../category/interactor/DeleteCategory.kt | 4 ++--
.../category/interactor/RenameCategory.kt | 4 ++--
.../category/interactor/ReorderCategory.kt | 4 ++--
.../category/interactor/SetMangaCategories.kt | 2 +-
.../category/interactor/UpdateCategory.kt | 2 +-
.../domain/chapter/interactor/GetChapter.kt | 2 +-
.../chapter/interactor/GetChaptersByMangaId.kt | 2 +-
.../interactor/SetMangaDefaultChapterFlags.kt | 2 +-
.../domain/chapter/interactor/UpdateChapter.kt | 2 +-
.../domain/chapter/service/ChapterSort.kt | 2 +-
.../download/service/DownloadPreferences.kt | 2 +-
.../library/service/LibraryPreferences.kt | 8 ++++----
.../domain/manga/interactor/GetManga.kt | 2 +-
.../java/tachiyomi/domain/manga/model/Manga.kt | 2 +-
.../tachiyomi/domain/manga/model/TriState.kt | 2 +-
.../interactor/GetApplicationRelease.kt | 4 ++--
.../storage/service/StoragePreferences.kt | 6 +++---
.../domain/track/interactor/DeleteTrack.kt | 2 +-
.../domain/track/interactor/GetTracks.kt | 2 +-
.../domain/track/interactor/InsertTrack.kt | 2 +-
.../interactor/GetApplicationReleaseTest.kt | 4 ++--
presentation-core/build.gradle.kts | 2 +-
.../core/components/SettingsItems.kt | 6 +++---
.../presentation/core/i18n/Localize.kt | 4 ++--
.../presentation/core/util/Preference.kt | 2 +-
presentation-widget/build.gradle.kts | 2 +-
.../widget/BaseUpdatesGridGlanceWidget.kt | 2 +-
.../presentation/widget/WidgetManager.kt | 2 +-
.../widget/components/LockedWidget.kt | 2 +-
.../widget/components/UpdatesWidget.kt | 2 +-
settings.gradle.kts | 12 ++++++------
source-api/build.gradle.kts | 2 +-
.../eu/kanade/tachiyomi/util/RxExtension.kt | 2 +-
.../kanade/tachiyomi/source/CatalogueSource.kt | 2 +-
.../tachiyomi/source/online/HttpSource.kt | 2 +-
source-local/build.gradle.kts | 2 +-
.../tachiyomi/source/local/LocalSource.kt | 14 +++++++-------
.../tachiyomi/source/local/filter/OrderBy.kt | 2 +-
.../source/local/image/LocalCoverManager.kt | 4 ++--
.../tachiyomi/source/local/io/Archive.kt | 2 +-
.../kotlin/tachiyomi/source/local/io/Format.kt | 2 +-
251 files changed, 416 insertions(+), 416 deletions(-)
rename core/{ => common}/.gitignore (100%)
rename core/{ => common}/build.gradle.kts (95%)
rename core/{ => common}/src/main/AndroidManifest.xml (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt (86%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/AndroidCookieJar.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/DohProviders.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/JavaScriptEngine.kt (92%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/NetworkHelper.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/NetworkPreferences.kt (85%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/OkHttpExtensions.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/ProgressListener.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/ProgressResponseBody.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/Requests.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt (99%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt (98%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/util/lang/Hash.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/util/lang/StringExtensions.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/util/storage/DiskUtil.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/util/storage/EpubFile.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/util/system/DensityExtensions.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/util/system/DeviceUtil.kt (98%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/util/system/ToastExtensions.kt (94%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt (100%)
rename core/{src/main/java => common/src/main/kotlin}/eu/kanade/tachiyomi/util/system/WebViewUtil.kt (98%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/Constants.kt (96%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/i18n/Localize.kt (97%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/preference/AndroidPreference.kt (98%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/preference/AndroidPreferenceStore.kt (81%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/preference/CheckboxState.kt (97%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/preference/InMemoryPreferenceStore.kt (98%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/preference/Preference.kt (92%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/preference/PreferenceStore.kt (96%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/preference/TriState.kt (89%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/storage/AndroidStorageFolderProvider.kt (86%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/storage/FolderProvider.kt (72%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/storage/UniFileExtensions.kt (87%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/storage/UniFileTempFileManager.kt (97%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/util/lang/BooleanExtensions.kt (52%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/util/lang/CoroutinesExtensions.kt (98%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/util/lang/RxCoroutineBridge.kt (98%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/util/lang/SortUtil.kt (88%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/util/system/ImageUtil.kt (99%)
rename core/{src/main/java/tachiyomi/core => common/src/main/kotlin/tachiyomi/core/common}/util/system/LogcatExtensions.kt (90%)
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 871b23bdc..3c5e630fa 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -140,7 +140,7 @@ android {
dependencies {
implementation(projects.i18n)
- implementation(projects.core)
+ implementation(projects.core.common)
implementation(projects.coreMetadata)
implementation(projects.sourceApi)
implementation(projects.sourceLocal)
diff --git a/app/src/main/java/eu/kanade/core/preference/CheckboxState.kt b/app/src/main/java/eu/kanade/core/preference/CheckboxState.kt
index 12635d04f..0f59a885d 100644
--- a/app/src/main/java/eu/kanade/core/preference/CheckboxState.kt
+++ b/app/src/main/java/eu/kanade/core/preference/CheckboxState.kt
@@ -1,7 +1,7 @@
package eu.kanade.core.preference
import androidx.compose.ui.state.ToggleableState
-import tachiyomi.core.preference.CheckboxState
+import tachiyomi.core.common.preference.CheckboxState
fun CheckboxState.TriState.asToggleableState() = when (this) {
is CheckboxState.TriState.Exclude -> ToggleableState.Indeterminate
diff --git a/app/src/main/java/eu/kanade/core/preference/PreferenceMutableState.kt b/app/src/main/java/eu/kanade/core/preference/PreferenceMutableState.kt
index cb91e700a..1c7d9e761 100644
--- a/app/src/main/java/eu/kanade/core/preference/PreferenceMutableState.kt
+++ b/app/src/main/java/eu/kanade/core/preference/PreferenceMutableState.kt
@@ -5,7 +5,7 @@ import androidx.compose.runtime.mutableStateOf
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
-import tachiyomi.core.preference.Preference
+import tachiyomi.core.common.preference.Preference
class PreferenceMutableState(
private val preference: Preference,
diff --git a/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt b/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt
index d52a3899c..9fa63d2cd 100644
--- a/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt
+++ b/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt
@@ -2,8 +2,8 @@ package eu.kanade.domain.base
import android.content.Context
import dev.icerock.moko.resources.StringResource
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
import tachiyomi.i18n.MR
class BasePreferences(
diff --git a/app/src/main/java/eu/kanade/domain/base/ExtensionInstallerPreference.kt b/app/src/main/java/eu/kanade/domain/base/ExtensionInstallerPreference.kt
index 33f148e95..6dd6ef4fa 100644
--- a/app/src/main/java/eu/kanade/domain/base/ExtensionInstallerPreference.kt
+++ b/app/src/main/java/eu/kanade/domain/base/ExtensionInstallerPreference.kt
@@ -5,9 +5,9 @@ import eu.kanade.domain.base.BasePreferences.ExtensionInstaller
import eu.kanade.tachiyomi.util.system.hasMiuiPackageInstaller
import eu.kanade.tachiyomi.util.system.isShizukuInstalled
import kotlinx.coroutines.CoroutineScope
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.preference.getEnum
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
+import tachiyomi.core.common.preference.getEnum
class ExtensionInstallerPreference(
private val context: Context,
diff --git a/app/src/main/java/eu/kanade/domain/chapter/interactor/SetReadStatus.kt b/app/src/main/java/eu/kanade/domain/chapter/interactor/SetReadStatus.kt
index 673b686f5..346384f04 100644
--- a/app/src/main/java/eu/kanade/domain/chapter/interactor/SetReadStatus.kt
+++ b/app/src/main/java/eu/kanade/domain/chapter/interactor/SetReadStatus.kt
@@ -2,8 +2,8 @@ package eu.kanade.domain.chapter.interactor
import eu.kanade.domain.download.interactor.DeleteDownload
import logcat.LogPriority
-import tachiyomi.core.util.lang.withNonCancellableContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withNonCancellableContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.model.ChapterUpdate
import tachiyomi.domain.chapter.repository.ChapterRepository
diff --git a/app/src/main/java/eu/kanade/domain/download/interactor/DeleteDownload.kt b/app/src/main/java/eu/kanade/domain/download/interactor/DeleteDownload.kt
index 5ec3b4a7d..18a2bf3f0 100644
--- a/app/src/main/java/eu/kanade/domain/download/interactor/DeleteDownload.kt
+++ b/app/src/main/java/eu/kanade/domain/download/interactor/DeleteDownload.kt
@@ -1,7 +1,7 @@
package eu.kanade.domain.download.interactor
import eu.kanade.tachiyomi.data.download.DownloadManager
-import tachiyomi.core.util.lang.withNonCancellableContext
+import tachiyomi.core.common.util.lang.withNonCancellableContext
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.source.service.SourceManager
diff --git a/app/src/main/java/eu/kanade/domain/extension/interactor/CreateExtensionRepo.kt b/app/src/main/java/eu/kanade/domain/extension/interactor/CreateExtensionRepo.kt
index 66b949fc9..a8083ec00 100644
--- a/app/src/main/java/eu/kanade/domain/extension/interactor/CreateExtensionRepo.kt
+++ b/app/src/main/java/eu/kanade/domain/extension/interactor/CreateExtensionRepo.kt
@@ -1,7 +1,7 @@
package eu.kanade.domain.extension.interactor
import eu.kanade.domain.source.service.SourcePreferences
-import tachiyomi.core.preference.plusAssign
+import tachiyomi.core.common.preference.plusAssign
class CreateExtensionRepo(private val preferences: SourcePreferences) {
diff --git a/app/src/main/java/eu/kanade/domain/extension/interactor/DeleteExtensionRepo.kt b/app/src/main/java/eu/kanade/domain/extension/interactor/DeleteExtensionRepo.kt
index 8762be0d0..8e50ebeca 100644
--- a/app/src/main/java/eu/kanade/domain/extension/interactor/DeleteExtensionRepo.kt
+++ b/app/src/main/java/eu/kanade/domain/extension/interactor/DeleteExtensionRepo.kt
@@ -1,7 +1,7 @@
package eu.kanade.domain.extension.interactor
import eu.kanade.domain.source.service.SourcePreferences
-import tachiyomi.core.preference.minusAssign
+import tachiyomi.core.common.preference.minusAssign
class DeleteExtensionRepo(private val preferences: SourcePreferences) {
diff --git a/app/src/main/java/eu/kanade/domain/extension/interactor/TrustExtension.kt b/app/src/main/java/eu/kanade/domain/extension/interactor/TrustExtension.kt
index 0ad6b2c56..c3daec5f8 100644
--- a/app/src/main/java/eu/kanade/domain/extension/interactor/TrustExtension.kt
+++ b/app/src/main/java/eu/kanade/domain/extension/interactor/TrustExtension.kt
@@ -3,7 +3,7 @@ package eu.kanade.domain.extension.interactor
import android.content.pm.PackageInfo
import androidx.core.content.pm.PackageInfoCompat
import eu.kanade.domain.source.service.SourcePreferences
-import tachiyomi.core.preference.getAndSet
+import tachiyomi.core.common.preference.getAndSet
class TrustExtension(
private val preferences: SourcePreferences,
diff --git a/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt b/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
index 686b29f43..5334b598e 100644
--- a/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
+++ b/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
@@ -7,7 +7,7 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation
import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode
import tachiyomi.core.metadata.comicinfo.ComicInfo
import tachiyomi.core.metadata.comicinfo.ComicInfoPublishingStatus
-import tachiyomi.core.preference.TriState
+import tachiyomi.core.common.preference.TriState
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.manga.model.Manga
import uy.kohesive.injekt.Injekt
diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/GetSourcesWithFavoriteCount.kt b/app/src/main/java/eu/kanade/domain/source/interactor/GetSourcesWithFavoriteCount.kt
index 0cf342caf..962fbb8a6 100644
--- a/app/src/main/java/eu/kanade/domain/source/interactor/GetSourcesWithFavoriteCount.kt
+++ b/app/src/main/java/eu/kanade/domain/source/interactor/GetSourcesWithFavoriteCount.kt
@@ -3,7 +3,7 @@ package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.service.SourcePreferences
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
-import tachiyomi.core.util.lang.compareToWithCollator
+import tachiyomi.core.common.util.lang.compareToWithCollator
import tachiyomi.domain.source.model.Source
import tachiyomi.domain.source.repository.SourceRepository
import tachiyomi.source.local.isLocal
diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleLanguage.kt b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleLanguage.kt
index bc601117b..c813890d2 100644
--- a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleLanguage.kt
+++ b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleLanguage.kt
@@ -1,7 +1,7 @@
package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.service.SourcePreferences
-import tachiyomi.core.preference.getAndSet
+import tachiyomi.core.common.preference.getAndSet
class ToggleLanguage(
val preferences: SourcePreferences,
diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSource.kt b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSource.kt
index fbcb3147c..ec13f8d4b 100644
--- a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSource.kt
+++ b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSource.kt
@@ -1,7 +1,7 @@
package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.service.SourcePreferences
-import tachiyomi.core.preference.getAndSet
+import tachiyomi.core.common.preference.getAndSet
import tachiyomi.domain.source.model.Source
class ToggleSource(
diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSourcePin.kt b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSourcePin.kt
index e7ea8bb35..0a49a53ba 100644
--- a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSourcePin.kt
+++ b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSourcePin.kt
@@ -1,7 +1,7 @@
package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.service.SourcePreferences
-import tachiyomi.core.preference.getAndSet
+import tachiyomi.core.common.preference.getAndSet
import tachiyomi.domain.source.model.Source
class ToggleSourcePin(
diff --git a/app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt b/app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt
index 5779020a2..d4d3989c0 100644
--- a/app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt
+++ b/app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt
@@ -2,9 +2,9 @@ package eu.kanade.domain.source.service
import eu.kanade.domain.source.interactor.SetMigrateSorting
import eu.kanade.tachiyomi.util.system.LocaleHelper
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.preference.getEnum
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
+import tachiyomi.core.common.preference.getEnum
import tachiyomi.domain.library.model.LibraryDisplayMode
class SourcePreferences(
diff --git a/app/src/main/java/eu/kanade/domain/track/interactor/AddTracks.kt b/app/src/main/java/eu/kanade/domain/track/interactor/AddTracks.kt
index 70e612c3c..2d31c64e7 100644
--- a/app/src/main/java/eu/kanade/domain/track/interactor/AddTracks.kt
+++ b/app/src/main/java/eu/kanade/domain/track/interactor/AddTracks.kt
@@ -8,9 +8,9 @@ import eu.kanade.tachiyomi.data.track.Tracker
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.util.lang.convertEpochMillisZone
import logcat.LogPriority
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.lang.withNonCancellableContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withNonCancellableContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId
import tachiyomi.domain.history.interactor.GetHistory
import tachiyomi.domain.manga.model.Manga
diff --git a/app/src/main/java/eu/kanade/domain/track/interactor/SyncChapterProgressWithTrack.kt b/app/src/main/java/eu/kanade/domain/track/interactor/SyncChapterProgressWithTrack.kt
index 6fab0792a..8e6df2289 100644
--- a/app/src/main/java/eu/kanade/domain/track/interactor/SyncChapterProgressWithTrack.kt
+++ b/app/src/main/java/eu/kanade/domain/track/interactor/SyncChapterProgressWithTrack.kt
@@ -4,7 +4,7 @@ import eu.kanade.domain.track.model.toDbTrack
import eu.kanade.tachiyomi.data.track.EnhancedTracker
import eu.kanade.tachiyomi.data.track.Tracker
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId
import tachiyomi.domain.chapter.interactor.UpdateChapter
import tachiyomi.domain.chapter.model.toChapterUpdate
diff --git a/app/src/main/java/eu/kanade/domain/track/interactor/TrackChapter.kt b/app/src/main/java/eu/kanade/domain/track/interactor/TrackChapter.kt
index 557c3be83..a942d5f94 100644
--- a/app/src/main/java/eu/kanade/domain/track/interactor/TrackChapter.kt
+++ b/app/src/main/java/eu/kanade/domain/track/interactor/TrackChapter.kt
@@ -9,8 +9,8 @@ import eu.kanade.tachiyomi.data.track.TrackerManager
import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
import logcat.LogPriority
-import tachiyomi.core.util.lang.withNonCancellableContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withNonCancellableContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.track.interactor.GetTracks
import tachiyomi.domain.track.interactor.InsertTrack
diff --git a/app/src/main/java/eu/kanade/domain/track/service/DelayedTrackingUpdateJob.kt b/app/src/main/java/eu/kanade/domain/track/service/DelayedTrackingUpdateJob.kt
index b178cf746..1f4e246dc 100644
--- a/app/src/main/java/eu/kanade/domain/track/service/DelayedTrackingUpdateJob.kt
+++ b/app/src/main/java/eu/kanade/domain/track/service/DelayedTrackingUpdateJob.kt
@@ -12,8 +12,8 @@ import eu.kanade.domain.track.interactor.TrackChapter
import eu.kanade.domain.track.store.DelayedTrackingStore
import eu.kanade.tachiyomi.util.system.workManager
import logcat.LogPriority
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.track.interactor.GetTracks
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
diff --git a/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt b/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt
index 3e99d5ba0..ab000a9ea 100644
--- a/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt
+++ b/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt
@@ -2,8 +2,8 @@ package eu.kanade.domain.track.service
import eu.kanade.tachiyomi.data.track.Tracker
import eu.kanade.tachiyomi.data.track.anilist.Anilist
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
class TrackPreferences(
private val preferenceStore: PreferenceStore,
diff --git a/app/src/main/java/eu/kanade/domain/track/store/DelayedTrackingStore.kt b/app/src/main/java/eu/kanade/domain/track/store/DelayedTrackingStore.kt
index 5ec27cbea..10779a219 100644
--- a/app/src/main/java/eu/kanade/domain/track/store/DelayedTrackingStore.kt
+++ b/app/src/main/java/eu/kanade/domain/track/store/DelayedTrackingStore.kt
@@ -3,7 +3,7 @@ package eu.kanade.domain.track.store
import android.content.Context
import androidx.core.content.edit
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
class DelayedTrackingStore(context: Context) {
diff --git a/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt b/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt
index efb27fa02..606a1048d 100644
--- a/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt
+++ b/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt
@@ -5,8 +5,8 @@ import eu.kanade.domain.ui.model.TabletUiMode
import eu.kanade.domain.ui.model.ThemeMode
import eu.kanade.tachiyomi.util.system.DeviceUtil
import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable
-import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.preference.getEnum
+import tachiyomi.core.common.preference.PreferenceStore
+import tachiyomi.core.common.preference.getEnum
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.util.Locale
diff --git a/app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt
index 95003f1e4..6a428506f 100644
--- a/app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt
@@ -24,7 +24,7 @@ import eu.kanade.presentation.util.formattedMessage
import eu.kanade.tachiyomi.source.Source
import kotlinx.collections.immutable.persistentListOf
import kotlinx.coroutines.flow.StateFlow
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.domain.library.model.LibraryDisplayMode
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.source.model.StubSource
diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseIcons.kt b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseIcons.kt
index fbe82ad6e..b4710fc40 100644
--- a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseIcons.kt
+++ b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseIcons.kt
@@ -31,7 +31,7 @@ import eu.kanade.presentation.util.rememberResourceBitmapPainter
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.extension.util.ExtensionLoader
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.domain.source.model.Source
import tachiyomi.source.local.isLocal
diff --git a/app/src/main/java/eu/kanade/presentation/category/CategoryExtensions.kt b/app/src/main/java/eu/kanade/presentation/category/CategoryExtensions.kt
index a6c22c240..62c85907d 100644
--- a/app/src/main/java/eu/kanade/presentation/category/CategoryExtensions.kt
+++ b/app/src/main/java/eu/kanade/presentation/category/CategoryExtensions.kt
@@ -2,7 +2,7 @@ package eu.kanade.presentation.category
import android.content.Context
import androidx.compose.runtime.Composable
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.domain.category.model.Category
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
diff --git a/app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt b/app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt
index fd6396b95..7709d960f 100644
--- a/app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt
+++ b/app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt
@@ -30,7 +30,7 @@ import eu.kanade.presentation.category.visualName
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.delay
-import tachiyomi.core.preference.CheckboxState
+import tachiyomi.core.common.preference.CheckboxState
import tachiyomi.domain.category.model.Category
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding
diff --git a/app/src/main/java/eu/kanade/presentation/library/DeleteLibraryMangaDialog.kt b/app/src/main/java/eu/kanade/presentation/library/DeleteLibraryMangaDialog.kt
index 36346f14a..da6faa495 100644
--- a/app/src/main/java/eu/kanade/presentation/library/DeleteLibraryMangaDialog.kt
+++ b/app/src/main/java/eu/kanade/presentation/library/DeleteLibraryMangaDialog.kt
@@ -10,7 +10,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import dev.icerock.moko.resources.StringResource
-import tachiyomi.core.preference.CheckboxState
+import tachiyomi.core.common.preference.CheckboxState
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.LabeledCheckbox
import tachiyomi.presentation.core.i18n.stringResource
diff --git a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt
index 7e9efd716..ad0733606 100644
--- a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt
+++ b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt
@@ -19,7 +19,7 @@ import eu.kanade.tachiyomi.ui.library.LibrarySettingsScreenModel
import eu.kanade.tachiyomi.util.system.isDevFlavor
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
import kotlinx.collections.immutable.persistentListOf
-import tachiyomi.core.preference.TriState
+import tachiyomi.core.common.preference.TriState
import tachiyomi.domain.category.model.Category
import tachiyomi.domain.library.model.LibraryDisplayMode
import tachiyomi.domain.library.model.LibrarySort
diff --git a/app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt
index 64cba7158..5f98dbb86 100644
--- a/app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt
+++ b/app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt
@@ -31,7 +31,7 @@ import eu.kanade.domain.manga.model.forceDownloaded
import eu.kanade.presentation.components.TabbedDialog
import eu.kanade.presentation.components.TabbedDialogPaddings
import kotlinx.collections.immutable.persistentListOf
-import tachiyomi.core.preference.TriState
+import tachiyomi.core.common.preference.TriState
import tachiyomi.domain.manga.model.Manga
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.LabeledCheckbox
diff --git a/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt b/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt
index 974804db1..fc690139a 100644
--- a/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt
@@ -26,7 +26,7 @@ import eu.kanade.presentation.more.settings.widget.SwitchPreferenceWidget
import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.more.DownloadQueueState
-import tachiyomi.core.Constants
+import tachiyomi.core.common.Constants
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.ScrollbarLazyColumn
import tachiyomi.presentation.core.components.material.Scaffold
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/Preference.kt b/app/src/main/java/eu/kanade/presentation/more/settings/Preference.kt
index fd8d12067..d2ed81c58 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/Preference.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/Preference.kt
@@ -8,7 +8,7 @@ import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.ImmutableMap
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
-import tachiyomi.core.preference.Preference as PreferenceData
+import tachiyomi.core.common.preference.Preference as PreferenceData
sealed class Preference {
abstract val title: String
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
index c86492287..509f2196a 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
@@ -57,9 +57,9 @@ import kotlinx.collections.immutable.toImmutableMap
import kotlinx.coroutines.launch
import logcat.LogPriority
import okhttp3.Headers
-import tachiyomi.core.util.lang.launchNonCancellable
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.launchNonCancellable
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.manga.interactor.ResetViewerFlags
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt
index 57508ecbd..c8bfd10ca 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt
@@ -13,7 +13,7 @@ import eu.kanade.presentation.more.settings.Preference
import eu.kanade.presentation.more.settings.screen.browse.ExtensionReposScreen
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.authenticate
import kotlinx.collections.immutable.persistentListOf
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.pluralStringResource
import tachiyomi.presentation.core.i18n.stringResource
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt
index f82a58aca..91de2993f 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt
@@ -50,11 +50,11 @@ import eu.kanade.tachiyomi.util.system.toast
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.persistentMapOf
import logcat.LogPriority
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.storage.displayablePath
-import tachiyomi.core.util.lang.launchNonCancellable
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.storage.displayablePath
+import tachiyomi.core.common.util.lang.launchNonCancellable
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.backup.service.BackupPreferences
import tachiyomi.domain.library.service.LibraryPreferences
import tachiyomi.domain.storage.service.StoragePreferences
@@ -100,7 +100,7 @@ object SettingsDataScreen : SearchableSettings {
@Composable
fun storageLocationPicker(
- storageDirPref: tachiyomi.core.preference.Preference,
+ storageDirPref: tachiyomi.core.common.preference.Preference,
): ManagedActivityResultLauncher {
val context = LocalContext.current
@@ -122,7 +122,7 @@ object SettingsDataScreen : SearchableSettings {
@Composable
fun storageLocationText(
- storageDirPref: tachiyomi.core.preference.Preference,
+ storageDirPref: tachiyomi.core.common.preference.Preference,
): String {
val context = LocalContext.current
val storageDir by storageDirPref.collectAsState()
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt
index fb1e0932c..1d0510025 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt
@@ -12,7 +12,7 @@ import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.authenticate
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticationSupported
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toImmutableMap
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.pluralStringResource
import tachiyomi.presentation.core.i18n.stringResource
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt
index 8d508746c..021f0ceb2 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt
@@ -53,8 +53,8 @@ import eu.kanade.tachiyomi.util.system.openInBrowser
import eu.kanade.tachiyomi.util.system.toast
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toImmutableList
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.withUIContext
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.withUIContext
import tachiyomi.domain.source.service.SourceManager
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt
index 1315c442b..58f690569 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt
@@ -38,9 +38,9 @@ import eu.kanade.tachiyomi.util.system.copyToClipboard
import eu.kanade.tachiyomi.util.system.toast
import kotlinx.coroutines.launch
import logcat.LogPriority
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.release.interactor.GetApplicationRelease
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.LinkIcon
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt
index 9ab8473dd..eaaec9585 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt
@@ -37,9 +37,9 @@ import eu.kanade.tachiyomi.util.system.toast
import kotlinx.collections.immutable.persistentListOf
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.update
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.launchUI
-import tachiyomi.core.util.lang.withNonCancellableContext
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchUI
+import tachiyomi.core.common.util.lang.withNonCancellableContext
import tachiyomi.data.Database
import tachiyomi.domain.source.interactor.GetSourcesWithNonLibraryManga
import tachiyomi.domain.source.model.Source
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/appearance/AppLanguageScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/appearance/AppLanguageScreen.kt
index bdba9e15c..b59b26aca 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/appearance/AppLanguageScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/appearance/AppLanguageScreen.kt
@@ -30,7 +30,7 @@ import eu.kanade.tachiyomi.util.system.LocaleHelper
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
import org.xmlpull.v1.XmlPullParser
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.i18n.stringResource
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/ExtensionReposScreenModel.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/ExtensionReposScreenModel.kt
index 353ad1bd6..d694618fb 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/ExtensionReposScreenModel.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/ExtensionReposScreenModel.kt
@@ -13,7 +13,7 @@ import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.update
-import tachiyomi.core.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.i18n.MR
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/widget/AppThemePreferenceWidget.kt b/app/src/main/java/eu/kanade/presentation/more/settings/widget/AppThemePreferenceWidget.kt
index b9dbbbfb8..db0842d08 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/widget/AppThemePreferenceWidget.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/widget/AppThemePreferenceWidget.kt
@@ -48,7 +48,7 @@ import eu.kanade.presentation.manga.components.MangaCover
import eu.kanade.presentation.theme.TachiyomiTheme
import eu.kanade.tachiyomi.util.system.DeviceUtil
import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable
-import tachiyomi.core.preference.InMemoryPreferenceStore
+import tachiyomi.core.common.preference.InMemoryPreferenceStore
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource
diff --git a/app/src/main/java/eu/kanade/presentation/reader/settings/ColorFilterPage.kt b/app/src/main/java/eu/kanade/presentation/reader/settings/ColorFilterPage.kt
index 1c5a9c6fb..cb8f5578b 100644
--- a/app/src/main/java/eu/kanade/presentation/reader/settings/ColorFilterPage.kt
+++ b/app/src/main/java/eu/kanade/presentation/reader/settings/ColorFilterPage.kt
@@ -11,7 +11,7 @@ import androidx.core.graphics.green
import androidx.core.graphics.red
import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences.Companion.ColorFilterMode
import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel
-import tachiyomi.core.preference.getAndSet
+import tachiyomi.core.common.preference.getAndSet
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.CheckboxItem
import tachiyomi.presentation.core.components.SettingsChipRow
diff --git a/app/src/main/java/eu/kanade/presentation/util/ExceptionFormatter.kt b/app/src/main/java/eu/kanade/presentation/util/ExceptionFormatter.kt
index a76a225b9..be3cfff1a 100644
--- a/app/src/main/java/eu/kanade/presentation/util/ExceptionFormatter.kt
+++ b/app/src/main/java/eu/kanade/presentation/util/ExceptionFormatter.kt
@@ -4,7 +4,7 @@ import android.content.Context
import eu.kanade.tachiyomi.network.HttpException
import eu.kanade.tachiyomi.source.online.LicensedMangaChaptersException
import eu.kanade.tachiyomi.util.system.isOnline
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.data.source.NoResultsException
import tachiyomi.domain.source.model.SourceNotInstalledException
import tachiyomi.i18n.MR
diff --git a/app/src/main/java/eu/kanade/presentation/util/TimeUtils.kt b/app/src/main/java/eu/kanade/presentation/util/TimeUtils.kt
index 0bb5089ab..643f19f6e 100644
--- a/app/src/main/java/eu/kanade/presentation/util/TimeUtils.kt
+++ b/app/src/main/java/eu/kanade/presentation/util/TimeUtils.kt
@@ -4,7 +4,7 @@ import android.content.Context
import android.text.format.DateUtils
import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
import java.time.Instant
diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt
index 2b53cee0c..dfe5dad41 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/App.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt
@@ -49,8 +49,8 @@ import logcat.AndroidLogcatLogger
import logcat.LogPriority
import logcat.LogcatLogger
import org.conscrypt.Conscrypt
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.i18n.MR
import tachiyomi.presentation.widget.WidgetManager
import uy.kohesive.injekt.Injekt
diff --git a/app/src/main/java/eu/kanade/tachiyomi/AppInfo.kt b/app/src/main/java/eu/kanade/tachiyomi/AppInfo.kt
index 322983606..1a6d3db63 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/AppInfo.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/AppInfo.kt
@@ -1,6 +1,6 @@
package eu.kanade.tachiyomi
-import tachiyomi.core.util.system.ImageUtil
+import tachiyomi.core.common.util.system.ImageUtil
/**
* Used by extensions.
diff --git a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
index 119adf72d..154326514 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
@@ -3,8 +3,8 @@ package eu.kanade.tachiyomi
import android.content.Context
import eu.kanade.tachiyomi.data.backup.create.BackupCreateJob
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
object Migrations {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/crash/GlobalExceptionHandler.kt b/app/src/main/java/eu/kanade/tachiyomi/crash/GlobalExceptionHandler.kt
index 0b64f296c..600dac444 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/crash/GlobalExceptionHandler.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/crash/GlobalExceptionHandler.kt
@@ -10,7 +10,7 @@ import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.json.Json
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import kotlin.system.exitProcess
class GlobalExceptionHandler private constructor(
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt
index 4ef212999..fc24f245d 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt
@@ -12,9 +12,9 @@ import eu.kanade.tachiyomi.util.storage.getUriCompat
import eu.kanade.tachiyomi.util.system.cancelNotification
import eu.kanade.tachiyomi.util.system.notificationBuilder
import eu.kanade.tachiyomi.util.system.notify
-import tachiyomi.core.i18n.pluralStringResource
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.storage.displayablePath
+import tachiyomi.core.common.i18n.pluralStringResource
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.storage.displayablePath
import tachiyomi.i18n.MR
import uy.kohesive.injekt.injectLazy
import java.io.File
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreateJob.kt
index cd607480d..80c11c62f 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreateJob.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreateJob.kt
@@ -24,7 +24,7 @@ import eu.kanade.tachiyomi.util.system.isRunning
import eu.kanade.tachiyomi.util.system.setForegroundSafely
import eu.kanade.tachiyomi.util.system.workManager
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.backup.service.BackupPreferences
import tachiyomi.domain.storage.service.StorageManager
import uy.kohesive.injekt.Injekt
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt
index 8bd718206..14d05e239 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt
@@ -21,8 +21,8 @@ import logcat.LogPriority
import okio.buffer
import okio.gzip
import okio.sink
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.backup.service.BackupPreferences
import tachiyomi.domain.manga.interactor.GetFavorites
import tachiyomi.domain.manga.model.Manga
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/PreferenceBackupCreator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/PreferenceBackupCreator.kt
index e0b8f0add..d14cef230 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/PreferenceBackupCreator.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/PreferenceBackupCreator.kt
@@ -11,8 +11,8 @@ import eu.kanade.tachiyomi.data.backup.models.StringSetPreferenceValue
import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.preferenceKey
import eu.kanade.tachiyomi.source.sourcePreferences
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
import tachiyomi.domain.source.service.SourceManager
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestoreJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestoreJob.kt
index 180e8f055..0ecf97e06 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestoreJob.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestoreJob.kt
@@ -19,8 +19,8 @@ import eu.kanade.tachiyomi.util.system.setForegroundSafely
import eu.kanade.tachiyomi.util.system.workManager
import kotlinx.coroutines.CancellationException
import logcat.LogPriority
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.i18n.MR
class BackupRestoreJob(private val context: Context, workerParams: WorkerParameters) :
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt
index 796d74ae1..a17d33f43 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt
@@ -16,7 +16,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.launch
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import java.io.File
import java.text.SimpleDateFormat
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/PreferenceRestorer.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/PreferenceRestorer.kt
index 1062937d4..4871e3949 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/PreferenceRestorer.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/PreferenceRestorer.kt
@@ -12,8 +12,8 @@ import eu.kanade.tachiyomi.data.backup.models.StringPreferenceValue
import eu.kanade.tachiyomi.data.backup.models.StringSetPreferenceValue
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.source.sourcePreferences
-import tachiyomi.core.preference.AndroidPreferenceStore
-import tachiyomi.core.preference.PreferenceStore
+import tachiyomi.core.common.preference.AndroidPreferenceStore
+import tachiyomi.core.common.preference.PreferenceStore
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt
index 56d6262c9..bbdf85c10 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt
@@ -12,7 +12,7 @@ import logcat.LogPriority
import okhttp3.Response
import okio.buffer
import okio.sink
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.Chapter
import java.io.File
import java.io.IOException
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/coil/MangaCoverFetcher.kt b/app/src/main/java/eu/kanade/tachiyomi/data/coil/MangaCoverFetcher.kt
index 561d32b91..978f65bc9 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/coil/MangaCoverFetcher.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/coil/MangaCoverFetcher.kt
@@ -27,7 +27,7 @@ import okio.Source
import okio.buffer
import okio.sink
import okio.source
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.model.MangaCover
import tachiyomi.domain.source.service.SourceManager
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/coil/TachiyomiImageDecoder.kt b/app/src/main/java/eu/kanade/tachiyomi/data/coil/TachiyomiImageDecoder.kt
index fb1278614..acbda8cc5 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/coil/TachiyomiImageDecoder.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/coil/TachiyomiImageDecoder.kt
@@ -9,7 +9,7 @@ import coil.decode.ImageSource
import coil.fetch.SourceResult
import coil.request.Options
import okio.BufferedSource
-import tachiyomi.core.util.system.ImageUtil
+import tachiyomi.core.common.util.system.ImageUtil
import tachiyomi.decoder.ImageDecoder
/**
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt
index b09cca3bc..fb1c8e176 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt
@@ -39,11 +39,11 @@ import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.protobuf.ProtoBuf
import logcat.LogPriority
-import tachiyomi.core.storage.extension
-import tachiyomi.core.storage.nameWithoutExtension
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.launchNonCancellable
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.storage.extension
+import tachiyomi.core.common.storage.nameWithoutExtension
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchNonCancellable
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.source.service.SourceManager
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt
index 61d0be98e..01a342859 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt
@@ -14,10 +14,10 @@ import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.runBlocking
import logcat.LogPriority
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.storage.extension
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.storage.extension
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.category.interactor.GetCategories
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.download.service.DownloadPreferences
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt
index 0d9f6152a..4acd8322e 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt
@@ -14,7 +14,7 @@ import eu.kanade.tachiyomi.util.lang.chop
import eu.kanade.tachiyomi.util.system.cancelNotification
import eu.kanade.tachiyomi.util.system.notificationBuilder
import eu.kanade.tachiyomi.util.system.notify
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import uy.kohesive.injekt.injectLazy
import java.util.regex.Pattern
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt
index 469cc0765..001395af1 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt
@@ -5,9 +5,9 @@ import com.hippo.unifile.UniFile
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.util.storage.DiskUtil
import logcat.LogPriority
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.storage.displayablePath
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.storage.displayablePath
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.storage.service.StorageManager
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
index 8b54cfabd..8fb9ab14d 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
@@ -40,15 +40,15 @@ import kotlinx.coroutines.supervisorScope
import logcat.LogPriority
import nl.adaptivity.xmlutil.serialization.XML
import okhttp3.Response
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.core.metadata.comicinfo.COMIC_INFO_FILE
import tachiyomi.core.metadata.comicinfo.ComicInfo
-import tachiyomi.core.storage.extension
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.launchNow
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.system.ImageUtil
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.storage.extension
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchNow
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.system.ImageUtil
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.category.interactor.GetCategories
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.download.service.DownloadPreferences
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
index 8b9d76a03..258b1f754 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
@@ -39,10 +39,10 @@ import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.sync.Semaphore
import kotlinx.coroutines.sync.withPermit
import logcat.LogPriority
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.preference.getAndSet
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.preference.getAndSet
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.category.interactor.GetCategories
import tachiyomi.domain.category.model.Category
import tachiyomi.domain.chapter.model.Chapter
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt
index c21dd7d32..4d13dc724 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt
@@ -26,10 +26,10 @@ import eu.kanade.tachiyomi.util.system.cancelNotification
import eu.kanade.tachiyomi.util.system.getBitmapOrNull
import eu.kanade.tachiyomi.util.system.notificationBuilder
import eu.kanade.tachiyomi.util.system.notify
-import tachiyomi.core.Constants
-import tachiyomi.core.i18n.pluralStringResource
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.lang.launchUI
+import tachiyomi.core.common.Constants
+import tachiyomi.core.common.i18n.pluralStringResource
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.lang.launchUI
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.library.model.LibraryManga
import tachiyomi.domain.manga.model.Manga
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/MetadataUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/MetadataUpdateJob.kt
index 348b41ca3..c6401ef72 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/library/MetadataUpdateJob.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/MetadataUpdateJob.kt
@@ -27,8 +27,8 @@ import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.sync.Semaphore
import kotlinx.coroutines.sync.withPermit
import logcat.LogPriority
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.library.model.LibraryManga
import tachiyomi.domain.manga.interactor.GetLibraryManga
import tachiyomi.domain.manga.model.Manga
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt
index aba7de79d..f8435daec 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt
@@ -7,7 +7,7 @@ import android.net.Uri
import androidx.core.net.toUri
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
import eu.kanade.tachiyomi.ui.main.MainActivity
-import tachiyomi.core.Constants
+import tachiyomi.core.common.Constants
/**
* Class that manages [PendingIntent] of activity's
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt
index 7d6e9099e..de9e55803 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt
@@ -18,8 +18,8 @@ import eu.kanade.tachiyomi.util.system.notificationManager
import eu.kanade.tachiyomi.util.system.toShareIntent
import eu.kanade.tachiyomi.util.system.toast
import kotlinx.coroutines.runBlocking
-import tachiyomi.core.Constants
-import tachiyomi.core.util.lang.launchIO
+import tachiyomi.core.common.Constants
+import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.domain.chapter.interactor.GetChapter
import tachiyomi.domain.chapter.interactor.UpdateChapter
import tachiyomi.domain.chapter.model.Chapter
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/notification/Notifications.kt b/app/src/main/java/eu/kanade/tachiyomi/data/notification/Notifications.kt
index 7632d06db..6b34d124d 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/Notifications.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/Notifications.kt
@@ -7,7 +7,7 @@ import androidx.core.app.NotificationManagerCompat.IMPORTANCE_HIGH
import androidx.core.app.NotificationManagerCompat.IMPORTANCE_LOW
import eu.kanade.tachiyomi.util.system.buildNotificationChannel
import eu.kanade.tachiyomi.util.system.buildNotificationChannelGroup
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
/**
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/saver/ImageSaver.kt b/app/src/main/java/eu/kanade/tachiyomi/data/saver/ImageSaver.kt
index 0bf0aae68..beefba353 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/saver/ImageSaver.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/saver/ImageSaver.kt
@@ -15,9 +15,9 @@ import eu.kanade.tachiyomi.util.storage.cacheImageDir
import eu.kanade.tachiyomi.util.storage.getUriCompat
import logcat.LogPriority
import okio.IOException
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.system.ImageUtil
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.system.ImageUtil
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.i18n.MR
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/BaseTracker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/BaseTracker.kt
index 3da3c392a..8f88f1051 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/BaseTracker.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/BaseTracker.kt
@@ -10,9 +10,9 @@ import eu.kanade.tachiyomi.network.NetworkHelper
import eu.kanade.tachiyomi.util.system.toast
import logcat.LogPriority
import okhttp3.OkHttpClient
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.track.interactor.InsertTrack
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt
index 2917952a0..c808d0f31 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt
@@ -25,7 +25,7 @@ import kotlinx.serialization.json.put
import kotlinx.serialization.json.putJsonObject
import okhttp3.OkHttpClient
import okhttp3.RequestBody.Companion.toRequestBody
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withIOContext
import uy.kohesive.injekt.injectLazy
import java.time.Instant
import java.time.LocalDate
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt
index 8609d405a..65d2dc805 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt
@@ -21,7 +21,7 @@ import okhttp3.CacheControl
import okhttp3.FormBody
import okhttp3.OkHttpClient
import okhttp3.Request
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withIOContext
import uy.kohesive.injekt.injectLazy
import java.net.URLEncoder
import java.nio.charset.StandardCharsets
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/KavitaApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/KavitaApi.kt
index 5a23b14d9..fd1b26197 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/KavitaApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/KavitaApi.kt
@@ -12,8 +12,8 @@ import okhttp3.Dns
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.OkHttpClient
import okhttp3.RequestBody.Companion.toRequestBody
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.system.logcat
import uy.kohesive.injekt.injectLazy
import java.io.IOException
import java.net.SocketTimeoutException
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt
index e6c3acadf..3c9251eaf 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt
@@ -25,7 +25,7 @@ import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withIOContext
import uy.kohesive.injekt.injectLazy
import java.net.URLEncoder
import java.nio.charset.StandardCharsets
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/komga/KomgaApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/komga/KomgaApi.kt
index 2852d8e8e..a8661bf18 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/komga/KomgaApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/komga/KomgaApi.kt
@@ -14,8 +14,8 @@ import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody.Companion.toRequestBody
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.system.logcat
import uy.kohesive.injekt.injectLazy
private const val READLIST_API = "/api/v1/readlists"
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdatesApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdatesApi.kt
index fa7e4556d..5da3b7222 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdatesApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdatesApi.kt
@@ -28,7 +28,7 @@ import logcat.LogPriority
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.RequestBody.Companion.toRequestBody
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import uy.kohesive.injekt.injectLazy
import tachiyomi.domain.track.model.Track as DomainTrack
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt
index 83a2032d2..2aef56016 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt
@@ -28,7 +28,7 @@ import okhttp3.Headers
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withIOContext
import uy.kohesive.injekt.injectLazy
import java.text.SimpleDateFormat
import java.util.Locale
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt
index 46740c595..6eb93a636 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt
@@ -25,7 +25,7 @@ import kotlinx.serialization.json.putJsonObject
import okhttp3.FormBody
import okhttp3.OkHttpClient
import okhttp3.RequestBody.Companion.toRequestBody
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withIOContext
import uy.kohesive.injekt.injectLazy
import tachiyomi.domain.track.model.Track as DomainTrack
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/SuwayomiApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/SuwayomiApi.kt
index ef1d2e1b1..c7cc8a188 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/SuwayomiApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/SuwayomiApi.kt
@@ -16,7 +16,7 @@ import okhttp3.Dns
import okhttp3.FormBody
import okhttp3.Headers
import okhttp3.OkHttpClient
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withIOContext
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
index 2197dd992..d3632767c 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
@@ -3,7 +3,7 @@ package eu.kanade.tachiyomi.data.updater
import android.content.Context
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.util.system.isInstalledFromFDroid
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.domain.release.interactor.GetApplicationRelease
import uy.kohesive.injekt.injectLazy
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateDownloadJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateDownloadJob.kt
index 073f2bb0d..c1aa46626 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateDownloadJob.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateDownloadJob.kt
@@ -23,8 +23,8 @@ import eu.kanade.tachiyomi.util.system.setForegroundSafely
import eu.kanade.tachiyomi.util.system.workManager
import okhttp3.internal.http2.ErrorCode
import okhttp3.internal.http2.StreamResetException
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.i18n.MR
import uy.kohesive.injekt.injectLazy
import java.io.File
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateNotifier.kt
index 6c20bea64..35147790f 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateNotifier.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateNotifier.kt
@@ -13,7 +13,7 @@ import eu.kanade.tachiyomi.data.notification.NotificationReceiver
import eu.kanade.tachiyomi.data.notification.Notifications
import eu.kanade.tachiyomi.util.system.notificationBuilder
import eu.kanade.tachiyomi.util.system.notify
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.domain.release.model.Release
import tachiyomi.i18n.MR
diff --git a/app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt b/app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt
index ef0f65fff..9fb7b2fb5 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt
@@ -26,8 +26,8 @@ import kotlinx.serialization.protobuf.ProtoBuf
import nl.adaptivity.xmlutil.XmlDeclMode
import nl.adaptivity.xmlutil.core.XmlVersion
import nl.adaptivity.xmlutil.serialization.XML
-import tachiyomi.core.storage.AndroidStorageFolderProvider
-import tachiyomi.core.storage.UniFileTempFileManager
+import tachiyomi.core.common.storage.AndroidStorageFolderProvider
+import tachiyomi.core.common.storage.UniFileTempFileManager
import tachiyomi.data.AndroidDatabaseHandler
import tachiyomi.data.Database
import tachiyomi.data.DatabaseHandler
diff --git a/app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt b/app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt
index 51136226b..b56c16cae 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt
@@ -9,9 +9,9 @@ import eu.kanade.tachiyomi.core.security.SecurityPreferences
import eu.kanade.tachiyomi.network.NetworkPreferences
import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
import eu.kanade.tachiyomi.util.system.isDevFlavor
-import tachiyomi.core.preference.AndroidPreferenceStore
-import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.storage.AndroidStorageFolderProvider
+import tachiyomi.core.common.preference.AndroidPreferenceStore
+import tachiyomi.core.common.preference.PreferenceStore
+import tachiyomi.core.common.storage.AndroidStorageFolderProvider
import tachiyomi.domain.backup.service.BackupPreferences
import tachiyomi.domain.download.service.DownloadPreferences
import tachiyomi.domain.library.service.LibraryPreferences
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
index 2c119a18b..d8f56b878 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
@@ -19,9 +19,9 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.emptyFlow
import logcat.LogPriority
-import tachiyomi.core.util.lang.launchNow
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.launchNow
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.source.model.StubSource
import tachiyomi.i18n.MR
import uy.kohesive.injekt.Injekt
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt
index 26e105616..0d79fd335 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt
@@ -13,10 +13,10 @@ import eu.kanade.tachiyomi.network.parseAs
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import logcat.LogPriority
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.system.logcat
import uy.kohesive.injekt.injectLazy
import java.time.Instant
import kotlin.time.Duration.Companion.days
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionUpdateNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionUpdateNotifier.kt
index 602ce80f9..ff764271e 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionUpdateNotifier.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionUpdateNotifier.kt
@@ -7,7 +7,7 @@ import eu.kanade.tachiyomi.data.notification.NotificationReceiver
import eu.kanade.tachiyomi.data.notification.Notifications
import eu.kanade.tachiyomi.util.system.cancelNotification
import eu.kanade.tachiyomi.util.system.notify
-import tachiyomi.core.i18n.pluralStringResource
+import tachiyomi.core.common.i18n.pluralStringResource
import tachiyomi.i18n.MR
class ExtensionUpdateNotifier(private val context: Context) {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/installer/PackageInstallerInstaller.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/installer/PackageInstallerInstaller.kt
index 222ff02d0..d3aef3b18 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/installer/PackageInstallerInstaller.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/installer/PackageInstallerInstaller.kt
@@ -15,7 +15,7 @@ import eu.kanade.tachiyomi.util.lang.use
import eu.kanade.tachiyomi.util.system.getParcelableExtraCompat
import eu.kanade.tachiyomi.util.system.getUriSize
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
class PackageInstallerInstaller(private val service: Service) : Installer(service) {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt
index 33ff287c7..c85611acf 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt
@@ -12,7 +12,7 @@ import kotlinx.coroutines.cancel
import kotlinx.coroutines.launch
import logcat.LogPriority
import rikka.shizuku.Shizuku
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.i18n.MR
import java.io.BufferedReader
import java.io.InputStream
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt
index 3d4b360c9..e0a008e1c 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt
@@ -14,8 +14,8 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.async
import logcat.LogPriority
-import tachiyomi.core.util.lang.launchNow
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.launchNow
+import tachiyomi.core.common.util.system.logcat
/**
* Broadcast receiver that listens for the system's packages installed, updated or removed, and only
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallService.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallService.kt
index 3ffe9f783..12bdb61d0 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallService.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallService.kt
@@ -15,8 +15,8 @@ import eu.kanade.tachiyomi.extension.util.ExtensionInstaller.Companion.EXTRA_DOW
import eu.kanade.tachiyomi.util.system.getSerializableExtraCompat
import eu.kanade.tachiyomi.util.system.notificationBuilder
import logcat.LogPriority
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.i18n.MR
class ExtensionInstallService : Service() {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt
index ff384e56f..b71974a30 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt
@@ -27,8 +27,8 @@ import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onCompletion
import kotlinx.coroutines.flow.transformWhile
import logcat.LogPriority
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.logcat
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.io.File
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt
index ef603f934..2d469f260 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt
@@ -20,7 +20,7 @@ import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.runBlocking
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import uy.kohesive.injekt.injectLazy
import java.io.File
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreen.kt
index 9fd5df0fd..278c10d36 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreen.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreen.kt
@@ -11,7 +11,7 @@ import cafe.adriel.voyager.navigator.currentOrThrow
import eu.kanade.presentation.browse.ExtensionFilterScreen
import eu.kanade.presentation.util.Screen
import kotlinx.coroutines.flow.collectLatest
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.screens.LoadingScreen
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreenModel.kt
index acfeafa04..7cd83923f 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreenModel.kt
@@ -20,7 +20,7 @@ import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt
index 5617e506b..e71d65997 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt
@@ -27,7 +27,7 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onCompletion
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.update
-import tachiyomi.core.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.i18n.MR
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsScreenModel.kt
index 8d8a9f607..4266c4730 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsScreenModel.kt
@@ -25,7 +25,7 @@ import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import logcat.LogPriority
import okhttp3.HttpUrl.Companion.toHttpUrl
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrateMangaScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrateMangaScreenModel.kt
index e5d886f85..8faf1c320 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrateMangaScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrateMangaScreenModel.kt
@@ -16,7 +16,7 @@ import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.manga.interactor.GetFavorites
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.source.service.SourceManager
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt
index d6b70381b..d3b35bcf4 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt
@@ -32,10 +32,10 @@ import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.ui.browse.migration.MigrationFlags
import kotlinx.coroutines.flow.update
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.withUIContext
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.withUIContext
import tachiyomi.domain.category.interactor.GetCategories
import tachiyomi.domain.category.interactor.SetMangaCategories
import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt
index 0bbe49b0a..acd8278a0 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt
@@ -28,7 +28,7 @@ import eu.kanade.tachiyomi.ui.home.HomeScreen
import eu.kanade.tachiyomi.ui.manga.MangaScreen
import eu.kanade.tachiyomi.ui.webview.WebViewScreen
import kotlinx.coroutines.launch
-import tachiyomi.core.Constants
+import tachiyomi.core.common.Constants
import tachiyomi.domain.manga.model.Manga
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.ExtendedFloatingActionButton
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceScreenModel.kt
index f7659b3e0..8968d62b8 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceScreenModel.kt
@@ -17,8 +17,8 @@ import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.update
import logcat.LogPriority
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.source.model.Source
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesScreenModel.kt
index ce98bf629..0f777f7e5 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesScreenModel.kt
@@ -16,8 +16,8 @@ import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.update
import logcat.LogPriority
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.source.model.Pin
import tachiyomi.domain.source.model.Source
import uy.kohesive.injekt.Injekt
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt
index 400b5215a..4bbf6d7dc 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt
@@ -53,8 +53,8 @@ import eu.kanade.tachiyomi.ui.webview.WebViewScreen
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.receiveAsFlow
-import tachiyomi.core.Constants
-import tachiyomi.core.util.lang.launchIO
+import tachiyomi.core.common.Constants
+import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.domain.source.model.StubSource
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.Scaffold
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt
index 4b0835850..a7e8a26ea 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt
@@ -35,9 +35,9 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
-import tachiyomi.core.preference.CheckboxState
-import tachiyomi.core.preference.mapAsCheckboxState
-import tachiyomi.core.util.lang.launchIO
+import tachiyomi.core.common.preference.CheckboxState
+import tachiyomi.core.common.preference.mapAsCheckboxState
+import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.domain.category.interactor.GetCategories
import tachiyomi.domain.category.interactor.SetMangaCategories
import tachiyomi.domain.category.model.Category
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterDialog.kt
index 9c4c5a272..017af7479 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterDialog.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterDialog.kt
@@ -18,7 +18,7 @@ import androidx.compose.ui.unit.dp
import eu.kanade.presentation.components.AdaptiveSheet
import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
-import tachiyomi.core.preference.TriState
+import tachiyomi.core.common.preference.TriState
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.CheckboxItem
import tachiyomi.presentation.core.components.CollapsibleBox
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/deeplink/DeepLinkScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/deeplink/DeepLinkScreenModel.kt
index e21821430..5bef14675 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/deeplink/DeepLinkScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/deeplink/DeepLinkScreenModel.kt
@@ -12,7 +12,7 @@ import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.ResolvableSource
import eu.kanade.tachiyomi.source.online.UriType
import kotlinx.coroutines.flow.update
-import tachiyomi.core.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.domain.chapter.interactor.GetChapterByUrlAndMangaId
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.manga.interactor.GetMangaByUrlAndSourceId
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt
index f8470ef7b..8332c0c97 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt
@@ -53,7 +53,7 @@ import eu.kanade.presentation.components.NestedMenuItem
import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.databinding.DownloadListBinding
import kotlinx.collections.immutable.persistentListOf
-import tachiyomi.core.util.lang.launchUI
+import tachiyomi.core.common.util.lang.launchUI
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.Pill
import tachiyomi.presentation.core.components.material.ExtendedFloatingActionButton
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt
index 960b66c3a..a344fcda3 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt
@@ -18,9 +18,9 @@ import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import logcat.LogPriority
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.history.interactor.GetHistory
import tachiyomi.domain.history.interactor.GetNextChapters
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt
index 0c6e283ca..9f91706f1 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt
@@ -27,7 +27,7 @@ import eu.kanade.tachiyomi.ui.reader.ReaderActivity
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.receiveAsFlow
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
index a1b6c3b1b..b2771d4e2 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
@@ -44,12 +44,12 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.update
-import tachiyomi.core.preference.CheckboxState
-import tachiyomi.core.preference.TriState
-import tachiyomi.core.util.lang.compareToWithCollator
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.launchNonCancellable
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.preference.CheckboxState
+import tachiyomi.core.common.preference.TriState
+import tachiyomi.core.common.util.lang.compareToWithCollator
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchNonCancellable
+import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.domain.category.interactor.GetCategories
import tachiyomi.domain.category.interactor.SetMangaCategories
import tachiyomi.domain.category.model.Category
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsScreenModel.kt
index ce573de3f..f0856f830 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsScreenModel.kt
@@ -4,10 +4,10 @@ import cafe.adriel.voyager.core.model.ScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.data.track.TrackerManager
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.TriState
-import tachiyomi.core.preference.getAndSet
-import tachiyomi.core.util.lang.launchIO
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.TriState
+import tachiyomi.core.common.preference.getAndSet
+import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.domain.category.interactor.SetDisplayMode
import tachiyomi.domain.category.interactor.SetSortModeForCategory
import tachiyomi.domain.category.model.Category
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
index e54dd97d6..7acdb51f7 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
@@ -48,8 +48,8 @@ import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.launch
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.lang.launchIO
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.domain.category.model.Category
import tachiyomi.domain.library.model.LibraryManga
import tachiyomi.domain.manga.model.Manga
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
index c0125bbd8..87ab0b4c8 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
@@ -89,9 +89,9 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import logcat.LogPriority
-import tachiyomi.core.Constants
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.Constants
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.library.service.LibraryPreferences
import tachiyomi.domain.release.interactor.GetApplicationRelease
import tachiyomi.i18n.MR
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaCoverScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaCoverScreenModel.kt
index 6a4d968a4..3cbfa540b 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaCoverScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaCoverScreenModel.kt
@@ -19,11 +19,11 @@ import eu.kanade.tachiyomi.util.system.toShareIntent
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import logcat.LogPriority
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.manga.interactor.GetManga
import tachiyomi.domain.manga.model.Manga
import tachiyomi.i18n.MR
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
index b73b4bcc3..f7dad1d8c 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
@@ -54,9 +54,9 @@ import eu.kanade.tachiyomi.util.system.toShareIntent
import eu.kanade.tachiyomi.util.system.toast
import kotlinx.coroutines.launch
import logcat.LogPriority
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.manga.model.Manga
import tachiyomi.i18n.MR
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
index ae61519ee..26ad3a7fc 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
@@ -50,15 +50,15 @@ import kotlinx.coroutines.flow.update
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import logcat.LogPriority
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.preference.CheckboxState
-import tachiyomi.core.preference.TriState
-import tachiyomi.core.preference.mapAsCheckboxState
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.launchNonCancellable
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.preference.CheckboxState
+import tachiyomi.core.common.preference.TriState
+import tachiyomi.core.common.preference.mapAsCheckboxState
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchNonCancellable
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.category.interactor.GetCategories
import tachiyomi.domain.category.interactor.SetMangaCategories
import tachiyomi.domain.category.model.Category
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt
index 980153732..e0ad25182 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt
@@ -64,11 +64,11 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import logcat.LogPriority
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.lang.launchNonCancellable
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.lang.launchNonCancellable
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.manga.interactor.GetManga
import tachiyomi.domain.source.service.SourceManager
import tachiyomi.domain.track.interactor.DeleteTrack
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt
index 3ca8418ad..7e4ac0932 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt
@@ -32,7 +32,7 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.combine
-import tachiyomi.core.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
import uy.kohesive.injekt.Injekt
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
index c67a49084..f170f7e1a 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
@@ -82,12 +82,12 @@ import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.sample
import kotlinx.coroutines.launch
import logcat.LogPriority
-import tachiyomi.core.Constants
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.launchNonCancellable
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.Constants
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchNonCancellable
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.util.collectAsState
import uy.kohesive.injekt.Injekt
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderNavigationOverlayView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderNavigationOverlayView.kt
index 70aa7bfb0..08f5f8349 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderNavigationOverlayView.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderNavigationOverlayView.kt
@@ -13,7 +13,7 @@ import androidx.core.graphics.withTranslation
import androidx.core.view.isVisible
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation
import eu.kanade.tachiyomi.ui.reader.viewer.navigation.DisabledNavigation
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import kotlin.math.abs
class ReaderNavigationOverlayView(context: Context, attributeSet: AttributeSet) : View(context, attributeSet) {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
index b7f4c9c14..c6170f2a9 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
@@ -54,13 +54,13 @@ import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.runBlocking
import logcat.LogPriority
-import tachiyomi.core.preference.toggle
-import tachiyomi.core.storage.UniFileTempFileManager
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.launchNonCancellable
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.preference.toggle
+import tachiyomi.core.common.storage.UniFileTempFileManager
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchNonCancellable
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId
import tachiyomi.domain.chapter.interactor.UpdateChapter
import tachiyomi.domain.chapter.model.ChapterUpdate
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/SaveImageNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/SaveImageNotifier.kt
index 2676744ca..ab0146a0e 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/SaveImageNotifier.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/SaveImageNotifier.kt
@@ -15,7 +15,7 @@ import eu.kanade.tachiyomi.util.system.cancelNotification
import eu.kanade.tachiyomi.util.system.getBitmapOrNull
import eu.kanade.tachiyomi.util.system.notificationBuilder
import eu.kanade.tachiyomi.util.system.notify
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
/**
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt
index b8f97c5f4..f0edbe7f3 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt
@@ -7,10 +7,10 @@ import eu.kanade.tachiyomi.data.download.DownloadProvider
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.storage.UniFileTempFileManager
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.storage.UniFileTempFileManager
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.source.model.StubSource
import tachiyomi.i18n.MR
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DirectoryPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DirectoryPageLoader.kt
index 2a11f74e3..8817b0682 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DirectoryPageLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DirectoryPageLoader.kt
@@ -4,7 +4,7 @@ import com.hippo.unifile.UniFile
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder
-import tachiyomi.core.util.system.ImageUtil
+import tachiyomi.core.common.util.system.ImageUtil
/**
* Loader used to load a chapter from a directory given on [file].
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt
index 775b493b3..1d18d7b47 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt
@@ -10,7 +10,7 @@ import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
-import tachiyomi.core.storage.UniFileTempFileManager
+import tachiyomi.core.common.storage.UniFileTempFileManager
import tachiyomi.domain.manga.model.Manga
import uy.kohesive.injekt.injectLazy
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
index 4802708a6..14c27bf95 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
@@ -15,8 +15,8 @@ import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.runInterruptible
import kotlinx.coroutines.suspendCancellableCoroutine
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.withIOContext
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.util.concurrent.PriorityBlockingQueue
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt
index ad513ec93..868ab92b2 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt
@@ -5,7 +5,7 @@ import com.github.junrar.rarfile.FileHeader
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder
-import tachiyomi.core.util.system.ImageUtil
+import tachiyomi.core.common.util.system.ImageUtil
import java.io.File
import java.io.InputStream
import java.io.PipedInputStream
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt
index e4fd1c6e5..e839d8a55 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt
@@ -3,7 +3,7 @@ package eu.kanade.tachiyomi.ui.reader.loader
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder
-import tachiyomi.core.util.system.ImageUtil
+import tachiyomi.core.common.util.system.ImageUtil
import java.io.File
import java.nio.charset.StandardCharsets
import java.util.zip.ZipFile
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderChapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderChapter.kt
index c0cdfdd7c..cb3bca256 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderChapter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderChapter.kt
@@ -4,7 +4,7 @@ import eu.kanade.domain.chapter.model.toDbChapter
import eu.kanade.tachiyomi.data.database.models.Chapter
import eu.kanade.tachiyomi.ui.reader.loader.PageLoader
import kotlinx.coroutines.flow.MutableStateFlow
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
data class ReaderChapter(val chapter: Chapter) {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt
index 4de0ecd94..6c079b836 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt
@@ -3,8 +3,8 @@ package eu.kanade.tachiyomi.ui.reader.setting
import android.os.Build
import androidx.compose.ui.graphics.BlendMode
import dev.icerock.moko.resources.StringResource
-import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.preference.getEnum
+import tachiyomi.core.common.preference.PreferenceStore
+import tachiyomi.core.common.preference.getEnum
import tachiyomi.i18n.MR
class ReaderPreferences(
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt
index 44dd19db4..0d973d239 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt
@@ -5,7 +5,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
-import tachiyomi.core.preference.Preference
+import tachiyomi.core.common.preference.Preference
/**
* Common configuration for all viewers.
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
index 2c81f1387..7b6d1dd6a 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
@@ -18,11 +18,11 @@ import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope
import logcat.LogPriority
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.ImageUtil
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.ImageUtil
+import tachiyomi.core.common.util.system.logcat
import java.io.BufferedInputStream
import java.io.ByteArrayInputStream
import java.io.InputStream
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerTransitionHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerTransitionHolder.kt
index 6adb5fcef..4569f4370 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerTransitionHolder.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerTransitionHolder.kt
@@ -20,7 +20,7 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
/**
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt
index 5508d1acd..ffa38bfba 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt
@@ -21,7 +21,7 @@ import eu.kanade.tachiyomi.ui.reader.viewer.Viewer
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation.NavigationRegion
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.cancel
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import uy.kohesive.injekt.injectLazy
import kotlin.math.min
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt
index ec78dc8c6..5ff4ecaae 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt
@@ -10,7 +10,7 @@ import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
import eu.kanade.tachiyomi.ui.reader.viewer.calculateChapterGap
import eu.kanade.tachiyomi.util.system.createReaderThemeContext
import eu.kanade.tachiyomi.widget.ViewPagerAdapter
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
/**
* Pager adapter used by this [viewer] to where [ViewerChapters] updates are posted.
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
index b491a7363..4f41d3d51 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
@@ -24,11 +24,11 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope
import kotlinx.coroutines.suspendCancellableCoroutine
import logcat.LogPriority
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.lang.withUIContext
-import tachiyomi.core.util.system.ImageUtil
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withUIContext
+import tachiyomi.core.common.util.system.ImageUtil
+import tachiyomi.core.common.util.system.logcat
import java.io.BufferedInputStream
import java.io.InputStream
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonTransitionHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonTransitionHolder.kt
index 65629799e..57036d070 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonTransitionHolder.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonTransitionHolder.kt
@@ -17,7 +17,7 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
/**
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt
index db65836d8..da11e68ff 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt
@@ -21,7 +21,7 @@ import eu.kanade.tachiyomi.ui.reader.viewer.Viewer
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation.NavigationRegion
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.cancel
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/security/UnlockActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/security/UnlockActivity.kt
index 557da5bdd..00d1e136a 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/security/UnlockActivity.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/security/UnlockActivity.kt
@@ -8,8 +8,8 @@ import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.startAuthentication
import logcat.LogPriority
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.i18n.MR
/**
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/TrackLoginActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/TrackLoginActivity.kt
index 47cd88416..3f742cfe0 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/TrackLoginActivity.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/TrackLoginActivity.kt
@@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.ui.setting.track
import android.net.Uri
import androidx.lifecycle.lifecycleScope
-import tachiyomi.core.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchIO
class TrackLoginActivity : BaseOAuthLoginActivity() {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt
index 9ed04cd78..0d553ab4b 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt
@@ -13,7 +13,7 @@ import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.track.TrackerManager
import eu.kanade.tachiyomi.source.model.SManga
import kotlinx.coroutines.flow.update
-import tachiyomi.core.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.domain.history.interactor.GetTotalReadDuration
import tachiyomi.domain.library.model.LibraryManga
import tachiyomi.domain.library.service.LibraryPreferences
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt
index 9574d0c7f..f76ac45fe 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt
@@ -32,9 +32,9 @@ import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import logcat.LogPriority
-import tachiyomi.core.util.lang.launchIO
-import tachiyomi.core.util.lang.launchNonCancellable
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.launchIO
+import tachiyomi.core.common.util.lang.launchNonCancellable
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.interactor.GetChapter
import tachiyomi.domain.chapter.interactor.UpdateChapter
import tachiyomi.domain.chapter.model.ChapterUpdate
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesTab.kt
index d84bcd38f..a9dc4281a 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesTab.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesTab.kt
@@ -26,7 +26,7 @@ import eu.kanade.tachiyomi.ui.manga.MangaScreen
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
import eu.kanade.tachiyomi.ui.updates.UpdatesScreenModel.Event
import kotlinx.coroutines.flow.collectLatest
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewActivity.kt
index 61d09dc79..040a02f76 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewActivity.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewActivity.kt
@@ -18,7 +18,7 @@ import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.view.setComposeContent
import logcat.LogPriority
import okhttp3.HttpUrl.Companion.toHttpUrl
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.source.service.SourceManager
import tachiyomi.i18n.MR
import uy.kohesive.injekt.injectLazy
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewScreenModel.kt
index 888369050..331d62b59 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewScreenModel.kt
@@ -11,7 +11,7 @@ import eu.kanade.tachiyomi.util.system.toShareIntent
import eu.kanade.tachiyomi.util.system.toast
import logcat.LogPriority
import okhttp3.HttpUrl.Companion.toHttpUrl
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.source.service.SourceManager
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt
index 33e21be6b..56e6c278b 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt
@@ -9,8 +9,8 @@ import eu.kanade.tachiyomi.util.system.WebViewUtil
import eu.kanade.tachiyomi.util.system.createFileInCacheDir
import eu.kanade.tachiyomi.util.system.toShareIntent
import eu.kanade.tachiyomi.util.system.toast
-import tachiyomi.core.util.lang.withNonCancellableContext
-import tachiyomi.core.util.lang.withUIContext
+import tachiyomi.core.common.util.lang.withNonCancellableContext
+import tachiyomi.core.common.util.lang.withUIContext
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/lang/DateExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/lang/DateExtensions.kt
index e7482165f..a313f5a2d 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/lang/DateExtensions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/lang/DateExtensions.kt
@@ -1,8 +1,8 @@
package eu.kanade.tachiyomi.util.lang
import android.content.Context
-import tachiyomi.core.i18n.pluralStringResource
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.pluralStringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import java.text.DateFormat
import java.time.Instant
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/AuthenticatorUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/AuthenticatorUtil.kt
index ce3a09141..164a1075c 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/system/AuthenticatorUtil.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/AuthenticatorUtil.kt
@@ -11,7 +11,7 @@ import androidx.biometric.auth.startClass2BiometricOrCredentialAuthentication
import androidx.core.content.ContextCompat
import androidx.fragment.app.FragmentActivity
import kotlinx.coroutines.suspendCancellableCoroutine
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import kotlin.coroutines.resume
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt
index 92b5f3843..190764631 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt
@@ -22,8 +22,8 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
import eu.kanade.tachiyomi.util.lang.truncateCenter
import logcat.LogPriority
import rikka.sui.Sui
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.i18n.stringResource
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.i18n.MR
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/IntentExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/IntentExtensions.kt
index ed4ce04f5..65acbed18 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/system/IntentExtensions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/IntentExtensions.kt
@@ -6,7 +6,7 @@ import android.content.Intent
import android.net.Uri
import android.os.Build
import androidx.core.content.IntentCompat
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import java.io.Serializable
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/LocaleHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/LocaleHelper.kt
index 71d965cd5..827eb739e 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/system/LocaleHelper.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/LocaleHelper.kt
@@ -3,7 +3,7 @@ package eu.kanade.tachiyomi.util.system
import android.content.Context
import androidx.core.os.LocaleListCompat
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreenModel
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import java.util.Locale
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/WorkManagerExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/WorkManagerExtensions.kt
index e565921db..a31857c0f 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/system/WorkManagerExtensions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/WorkManagerExtensions.kt
@@ -6,7 +6,7 @@ import androidx.work.WorkInfo
import androidx.work.WorkManager
import kotlinx.coroutines.delay
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
val Context.workManager: WorkManager
get() = WorkManager.getInstance(this)
diff --git a/core/.gitignore b/core/common/.gitignore
similarity index 100%
rename from core/.gitignore
rename to core/common/.gitignore
diff --git a/core/build.gradle.kts b/core/common/build.gradle.kts
similarity index 95%
rename from core/build.gradle.kts
rename to core/common/build.gradle.kts
index 841217152..560e7285f 100644
--- a/core/build.gradle.kts
+++ b/core/common/build.gradle.kts
@@ -5,7 +5,7 @@ plugins {
}
android {
- namespace = "eu.kanade.tachiyomi.core"
+ namespace = "eu.kanade.tachiyomi.core.common"
kotlinOptions {
freeCompilerArgs += listOf(
diff --git a/core/src/main/AndroidManifest.xml b/core/common/src/main/AndroidManifest.xml
similarity index 100%
rename from core/src/main/AndroidManifest.xml
rename to core/common/src/main/AndroidManifest.xml
diff --git a/core/src/main/java/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt
similarity index 86%
rename from core/src/main/java/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt
index faf268314..274f0c592 100644
--- a/core/src/main/java/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt
+++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt
@@ -1,9 +1,9 @@
package eu.kanade.tachiyomi.core.security
import dev.icerock.moko.resources.StringResource
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.preference.getEnum
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
+import tachiyomi.core.common.preference.getEnum
import tachiyomi.i18n.MR
class SecurityPreferences(
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/AndroidCookieJar.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/AndroidCookieJar.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/network/AndroidCookieJar.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/AndroidCookieJar.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/DohProviders.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/DohProviders.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/network/DohProviders.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/DohProviders.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/JavaScriptEngine.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/JavaScriptEngine.kt
similarity index 92%
rename from core/src/main/java/eu/kanade/tachiyomi/network/JavaScriptEngine.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/JavaScriptEngine.kt
index 4ecf3e09d..5c7894606 100644
--- a/core/src/main/java/eu/kanade/tachiyomi/network/JavaScriptEngine.kt
+++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/JavaScriptEngine.kt
@@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.network
import android.content.Context
import app.cash.quickjs.QuickJs
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withIOContext
/**
* Util for evaluating JavaScript in sources.
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/NetworkPreferences.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt
similarity index 85%
rename from core/src/main/java/eu/kanade/tachiyomi/network/NetworkPreferences.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt
index 7a334d00f..4c839b90d 100644
--- a/core/src/main/java/eu/kanade/tachiyomi/network/NetworkPreferences.kt
+++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt
@@ -1,7 +1,7 @@
package eu.kanade.tachiyomi.network
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
class NetworkPreferences(
private val preferenceStore: PreferenceStore,
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/OkHttpExtensions.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/OkHttpExtensions.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/ProgressListener.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/ProgressListener.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/network/ProgressListener.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/ProgressListener.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/ProgressResponseBody.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/ProgressResponseBody.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/network/ProgressResponseBody.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/ProgressResponseBody.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/Requests.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/Requests.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/network/Requests.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/Requests.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt
similarity index 99%
rename from core/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt
index 12a8f0ce0..6a765c680 100644
--- a/core/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt
+++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt
@@ -14,7 +14,7 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.Interceptor
import okhttp3.Request
import okhttp3.Response
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import java.io.IOException
import java.util.concurrent.CountDownLatch
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt
similarity index 98%
rename from core/src/main/java/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt
index cd1ffb14c..e18fa4299 100644
--- a/core/src/main/java/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt
+++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt
@@ -13,7 +13,7 @@ import okhttp3.Headers
import okhttp3.Interceptor
import okhttp3.Request
import okhttp3.Response
-import tachiyomi.core.util.lang.launchUI
+import tachiyomi.core.common.util.lang.launchUI
import tachiyomi.i18n.MR
import java.util.Locale
import java.util.concurrent.CountDownLatch
diff --git a/core/src/main/java/eu/kanade/tachiyomi/util/lang/Hash.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/lang/Hash.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/util/lang/Hash.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/util/lang/Hash.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/util/lang/StringExtensions.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/lang/StringExtensions.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/util/lang/StringExtensions.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/util/lang/StringExtensions.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/util/storage/DiskUtil.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/storage/DiskUtil.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/util/storage/DiskUtil.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/util/storage/DiskUtil.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/util/storage/EpubFile.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/storage/EpubFile.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/util/storage/EpubFile.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/util/storage/EpubFile.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/util/system/DensityExtensions.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/DensityExtensions.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/util/system/DensityExtensions.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/DensityExtensions.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/util/system/DeviceUtil.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/DeviceUtil.kt
similarity index 98%
rename from core/src/main/java/eu/kanade/tachiyomi/util/system/DeviceUtil.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/DeviceUtil.kt
index e2011f0c5..c9f20326d 100644
--- a/core/src/main/java/eu/kanade/tachiyomi/util/system/DeviceUtil.kt
+++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/DeviceUtil.kt
@@ -6,7 +6,7 @@ import android.content.Context
import android.os.Build
import androidx.core.content.getSystemService
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
object DeviceUtil {
diff --git a/core/src/main/java/eu/kanade/tachiyomi/util/system/ToastExtensions.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/ToastExtensions.kt
similarity index 94%
rename from core/src/main/java/eu/kanade/tachiyomi/util/system/ToastExtensions.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/ToastExtensions.kt
index 0f4aba9bf..453f9289e 100644
--- a/core/src/main/java/eu/kanade/tachiyomi/util/system/ToastExtensions.kt
+++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/ToastExtensions.kt
@@ -3,7 +3,7 @@ package eu.kanade.tachiyomi.util.system
import android.content.Context
import android.widget.Toast
import dev.icerock.moko.resources.StringResource
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
/**
* Display a toast in this context.
diff --git a/core/src/main/java/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt
similarity index 100%
rename from core/src/main/java/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt
diff --git a/core/src/main/java/eu/kanade/tachiyomi/util/system/WebViewUtil.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/WebViewUtil.kt
similarity index 98%
rename from core/src/main/java/eu/kanade/tachiyomi/util/system/WebViewUtil.kt
rename to core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/WebViewUtil.kt
index 42b756f74..b059e15d4 100644
--- a/core/src/main/java/eu/kanade/tachiyomi/util/system/WebViewUtil.kt
+++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/system/WebViewUtil.kt
@@ -8,7 +8,7 @@ import android.webkit.WebSettings
import android.webkit.WebView
import kotlinx.coroutines.suspendCancellableCoroutine
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import kotlin.coroutines.resume
object WebViewUtil {
diff --git a/core/src/main/java/tachiyomi/core/Constants.kt b/core/common/src/main/kotlin/tachiyomi/core/common/Constants.kt
similarity index 96%
rename from core/src/main/java/tachiyomi/core/Constants.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/Constants.kt
index 46c619b86..649418997 100644
--- a/core/src/main/java/tachiyomi/core/Constants.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/Constants.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core
+package tachiyomi.core.common
object Constants {
const val URL_HELP = "https://mihon.app/docs/guides/troubleshooting/"
diff --git a/core/src/main/java/tachiyomi/core/i18n/Localize.kt b/core/common/src/main/kotlin/tachiyomi/core/common/i18n/Localize.kt
similarity index 97%
rename from core/src/main/java/tachiyomi/core/i18n/Localize.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/i18n/Localize.kt
index d6f8f3c16..c698e856e 100644
--- a/core/src/main/java/tachiyomi/core/i18n/Localize.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/i18n/Localize.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.i18n
+package tachiyomi.core.common.i18n
import android.content.Context
import dev.icerock.moko.resources.PluralsResource
diff --git a/core/src/main/java/tachiyomi/core/preference/AndroidPreference.kt b/core/common/src/main/kotlin/tachiyomi/core/common/preference/AndroidPreference.kt
similarity index 98%
rename from core/src/main/java/tachiyomi/core/preference/AndroidPreference.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/preference/AndroidPreference.kt
index 21f5b1d30..577d83687 100644
--- a/core/src/main/java/tachiyomi/core/preference/AndroidPreference.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/preference/AndroidPreference.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.preference
+package tachiyomi.core.common.preference
import android.content.SharedPreferences
import android.content.SharedPreferences.Editor
@@ -12,7 +12,7 @@ import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.flow.stateIn
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
sealed class AndroidPreference(
private val preferences: SharedPreferences,
diff --git a/core/src/main/java/tachiyomi/core/preference/AndroidPreferenceStore.kt b/core/common/src/main/kotlin/tachiyomi/core/common/preference/AndroidPreferenceStore.kt
similarity index 81%
rename from core/src/main/java/tachiyomi/core/preference/AndroidPreferenceStore.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/preference/AndroidPreferenceStore.kt
index b24fa5dcc..6bdb120cd 100644
--- a/core/src/main/java/tachiyomi/core/preference/AndroidPreferenceStore.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/preference/AndroidPreferenceStore.kt
@@ -1,17 +1,17 @@
-package tachiyomi.core.preference
+package tachiyomi.core.common.preference
import android.content.Context
import android.content.SharedPreferences
import androidx.preference.PreferenceManager
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.callbackFlow
-import tachiyomi.core.preference.AndroidPreference.BooleanPrimitive
-import tachiyomi.core.preference.AndroidPreference.FloatPrimitive
-import tachiyomi.core.preference.AndroidPreference.IntPrimitive
-import tachiyomi.core.preference.AndroidPreference.LongPrimitive
-import tachiyomi.core.preference.AndroidPreference.Object
-import tachiyomi.core.preference.AndroidPreference.StringPrimitive
-import tachiyomi.core.preference.AndroidPreference.StringSetPrimitive
+import tachiyomi.core.common.preference.AndroidPreference.BooleanPrimitive
+import tachiyomi.core.common.preference.AndroidPreference.FloatPrimitive
+import tachiyomi.core.common.preference.AndroidPreference.IntPrimitive
+import tachiyomi.core.common.preference.AndroidPreference.LongPrimitive
+import tachiyomi.core.common.preference.AndroidPreference.Object
+import tachiyomi.core.common.preference.AndroidPreference.StringPrimitive
+import tachiyomi.core.common.preference.AndroidPreference.StringSetPrimitive
class AndroidPreferenceStore(
context: Context,
diff --git a/core/src/main/java/tachiyomi/core/preference/CheckboxState.kt b/core/common/src/main/kotlin/tachiyomi/core/common/preference/CheckboxState.kt
similarity index 97%
rename from core/src/main/java/tachiyomi/core/preference/CheckboxState.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/preference/CheckboxState.kt
index da681e16d..cf7e471c0 100644
--- a/core/src/main/java/tachiyomi/core/preference/CheckboxState.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/preference/CheckboxState.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.preference
+package tachiyomi.core.common.preference
sealed class CheckboxState(open val value: T) {
diff --git a/core/src/main/java/tachiyomi/core/preference/InMemoryPreferenceStore.kt b/core/common/src/main/kotlin/tachiyomi/core/common/preference/InMemoryPreferenceStore.kt
similarity index 98%
rename from core/src/main/java/tachiyomi/core/preference/InMemoryPreferenceStore.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/preference/InMemoryPreferenceStore.kt
index 2fb3ee9ec..96e8644ad 100644
--- a/core/src/main/java/tachiyomi/core/preference/InMemoryPreferenceStore.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/preference/InMemoryPreferenceStore.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.preference
+package tachiyomi.core.common.preference
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
diff --git a/core/src/main/java/tachiyomi/core/preference/Preference.kt b/core/common/src/main/kotlin/tachiyomi/core/common/preference/Preference.kt
similarity index 92%
rename from core/src/main/java/tachiyomi/core/preference/Preference.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/preference/Preference.kt
index 1cc0d3d3c..f75384491 100644
--- a/core/src/main/java/tachiyomi/core/preference/Preference.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/preference/Preference.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.preference
+package tachiyomi.core.common.preference
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
@@ -30,7 +30,7 @@ interface Preference {
return key.startsWith(PRIVATE_PREFIX)
}
fun privateKey(key: String): String {
- return "${PRIVATE_PREFIX}$key"
+ return "$PRIVATE_PREFIX$key"
}
/**
@@ -41,7 +41,7 @@ interface Preference {
return key.startsWith(APP_STATE_PREFIX)
}
fun appStateKey(key: String): String {
- return "${APP_STATE_PREFIX}$key"
+ return "$APP_STATE_PREFIX$key"
}
private const val APP_STATE_PREFIX = "__APP_STATE_"
diff --git a/core/src/main/java/tachiyomi/core/preference/PreferenceStore.kt b/core/common/src/main/kotlin/tachiyomi/core/common/preference/PreferenceStore.kt
similarity index 96%
rename from core/src/main/java/tachiyomi/core/preference/PreferenceStore.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/preference/PreferenceStore.kt
index 5b0e9da9b..0cd3a21bf 100644
--- a/core/src/main/java/tachiyomi/core/preference/PreferenceStore.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/preference/PreferenceStore.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.preference
+package tachiyomi.core.common.preference
interface PreferenceStore {
diff --git a/core/src/main/java/tachiyomi/core/preference/TriState.kt b/core/common/src/main/kotlin/tachiyomi/core/common/preference/TriState.kt
similarity index 89%
rename from core/src/main/java/tachiyomi/core/preference/TriState.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/preference/TriState.kt
index 68b9173ce..703f069c3 100644
--- a/core/src/main/java/tachiyomi/core/preference/TriState.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/preference/TriState.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.preference
+package tachiyomi.core.common.preference
enum class TriState {
DISABLED, // Disable filter
diff --git a/core/src/main/java/tachiyomi/core/storage/AndroidStorageFolderProvider.kt b/core/common/src/main/kotlin/tachiyomi/core/common/storage/AndroidStorageFolderProvider.kt
similarity index 86%
rename from core/src/main/java/tachiyomi/core/storage/AndroidStorageFolderProvider.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/storage/AndroidStorageFolderProvider.kt
index a5d48a49d..33335f345 100644
--- a/core/src/main/java/tachiyomi/core/storage/AndroidStorageFolderProvider.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/storage/AndroidStorageFolderProvider.kt
@@ -1,9 +1,9 @@
-package tachiyomi.core.storage
+package tachiyomi.core.common.storage
import android.content.Context
import android.os.Environment
import androidx.core.net.toUri
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import java.io.File
diff --git a/core/src/main/java/tachiyomi/core/storage/FolderProvider.kt b/core/common/src/main/kotlin/tachiyomi/core/common/storage/FolderProvider.kt
similarity index 72%
rename from core/src/main/java/tachiyomi/core/storage/FolderProvider.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/storage/FolderProvider.kt
index decd1c378..06d3e364f 100644
--- a/core/src/main/java/tachiyomi/core/storage/FolderProvider.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/storage/FolderProvider.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.storage
+package tachiyomi.core.common.storage
import java.io.File
diff --git a/core/src/main/java/tachiyomi/core/storage/UniFileExtensions.kt b/core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileExtensions.kt
similarity index 87%
rename from core/src/main/java/tachiyomi/core/storage/UniFileExtensions.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileExtensions.kt
index afe60ed35..8bbd9b3a7 100644
--- a/core/src/main/java/tachiyomi/core/storage/UniFileExtensions.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileExtensions.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.storage
+package tachiyomi.core.common.storage
import com.hippo.unifile.UniFile
diff --git a/core/src/main/java/tachiyomi/core/storage/UniFileTempFileManager.kt b/core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileTempFileManager.kt
similarity index 97%
rename from core/src/main/java/tachiyomi/core/storage/UniFileTempFileManager.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileTempFileManager.kt
index 0aa9f4b85..4ccc5bf43 100644
--- a/core/src/main/java/tachiyomi/core/storage/UniFileTempFileManager.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileTempFileManager.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.storage
+package tachiyomi.core.common.storage
import android.content.Context
import android.os.Build
diff --git a/core/src/main/java/tachiyomi/core/util/lang/BooleanExtensions.kt b/core/common/src/main/kotlin/tachiyomi/core/common/util/lang/BooleanExtensions.kt
similarity index 52%
rename from core/src/main/java/tachiyomi/core/util/lang/BooleanExtensions.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/util/lang/BooleanExtensions.kt
index 853499550..ca59ea7a7 100644
--- a/core/src/main/java/tachiyomi/core/util/lang/BooleanExtensions.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/util/lang/BooleanExtensions.kt
@@ -1,3 +1,3 @@
-package tachiyomi.core.util.lang
+package tachiyomi.core.common.util.lang
fun Boolean.toLong() = if (this) 1L else 0L
diff --git a/core/src/main/java/tachiyomi/core/util/lang/CoroutinesExtensions.kt b/core/common/src/main/kotlin/tachiyomi/core/common/util/lang/CoroutinesExtensions.kt
similarity index 98%
rename from core/src/main/java/tachiyomi/core/util/lang/CoroutinesExtensions.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/util/lang/CoroutinesExtensions.kt
index 829207a9b..a76bff2cc 100644
--- a/core/src/main/java/tachiyomi/core/util/lang/CoroutinesExtensions.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/util/lang/CoroutinesExtensions.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.util.lang
+package tachiyomi.core.common.util.lang
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.CoroutineStart
diff --git a/core/src/main/java/tachiyomi/core/util/lang/RxCoroutineBridge.kt b/core/common/src/main/kotlin/tachiyomi/core/common/util/lang/RxCoroutineBridge.kt
similarity index 98%
rename from core/src/main/java/tachiyomi/core/util/lang/RxCoroutineBridge.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/util/lang/RxCoroutineBridge.kt
index 56f58e1d4..d6f521cc0 100644
--- a/core/src/main/java/tachiyomi/core/util/lang/RxCoroutineBridge.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/util/lang/RxCoroutineBridge.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.util.lang
+package tachiyomi.core.common.util.lang
import kotlinx.coroutines.CancellableContinuation
import kotlinx.coroutines.InternalCoroutinesApi
diff --git a/core/src/main/java/tachiyomi/core/util/lang/SortUtil.kt b/core/common/src/main/kotlin/tachiyomi/core/common/util/lang/SortUtil.kt
similarity index 88%
rename from core/src/main/java/tachiyomi/core/util/lang/SortUtil.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/util/lang/SortUtil.kt
index 03c15d43b..9efe5f79f 100644
--- a/core/src/main/java/tachiyomi/core/util/lang/SortUtil.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/util/lang/SortUtil.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.util.lang
+package tachiyomi.core.common.util.lang
import java.text.Collator
import java.util.Locale
diff --git a/core/src/main/java/tachiyomi/core/util/system/ImageUtil.kt b/core/common/src/main/kotlin/tachiyomi/core/common/util/system/ImageUtil.kt
similarity index 99%
rename from core/src/main/java/tachiyomi/core/util/system/ImageUtil.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/util/system/ImageUtil.kt
index 68da52505..1c13d2be7 100644
--- a/core/src/main/java/tachiyomi/core/util/system/ImageUtil.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/util/system/ImageUtil.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.util.system
+package tachiyomi.core.common.util.system
import android.content.Context
import android.content.res.Configuration
diff --git a/core/src/main/java/tachiyomi/core/util/system/LogcatExtensions.kt b/core/common/src/main/kotlin/tachiyomi/core/common/util/system/LogcatExtensions.kt
similarity index 90%
rename from core/src/main/java/tachiyomi/core/util/system/LogcatExtensions.kt
rename to core/common/src/main/kotlin/tachiyomi/core/common/util/system/LogcatExtensions.kt
index fb587b07d..115f647f5 100644
--- a/core/src/main/java/tachiyomi/core/util/system/LogcatExtensions.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/util/system/LogcatExtensions.kt
@@ -1,4 +1,4 @@
-package tachiyomi.core.util.system
+package tachiyomi.core.common.util.system
import logcat.LogPriority
import logcat.asLog
diff --git a/data/build.gradle.kts b/data/build.gradle.kts
index 2d86bf577..f4ce0d039 100644
--- a/data/build.gradle.kts
+++ b/data/build.gradle.kts
@@ -26,7 +26,7 @@ android {
dependencies {
implementation(projects.sourceApi)
implementation(projects.domain)
- implementation(projects.core)
+ implementation(projects.core.common)
api(libs.bundles.sqldelight)
}
diff --git a/data/src/main/java/tachiyomi/data/chapter/ChapterRepositoryImpl.kt b/data/src/main/java/tachiyomi/data/chapter/ChapterRepositoryImpl.kt
index e156726fa..d2284b612 100644
--- a/data/src/main/java/tachiyomi/data/chapter/ChapterRepositoryImpl.kt
+++ b/data/src/main/java/tachiyomi/data/chapter/ChapterRepositoryImpl.kt
@@ -2,8 +2,8 @@ package tachiyomi.data.chapter
import kotlinx.coroutines.flow.Flow
import logcat.LogPriority
-import tachiyomi.core.util.lang.toLong
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.toLong
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.data.DatabaseHandler
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.model.ChapterUpdate
diff --git a/data/src/main/java/tachiyomi/data/history/HistoryRepositoryImpl.kt b/data/src/main/java/tachiyomi/data/history/HistoryRepositoryImpl.kt
index 103a0995b..e9157025c 100644
--- a/data/src/main/java/tachiyomi/data/history/HistoryRepositoryImpl.kt
+++ b/data/src/main/java/tachiyomi/data/history/HistoryRepositoryImpl.kt
@@ -2,7 +2,7 @@ package tachiyomi.data.history
import kotlinx.coroutines.flow.Flow
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.data.DatabaseHandler
import tachiyomi.domain.history.model.History
import tachiyomi.domain.history.model.HistoryUpdate
diff --git a/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt b/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt
index 1e5a50273..88ef9b3b7 100644
--- a/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt
+++ b/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt
@@ -2,7 +2,7 @@ package tachiyomi.data.manga
import kotlinx.coroutines.flow.Flow
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.data.DatabaseHandler
import tachiyomi.data.StringListColumnAdapter
import tachiyomi.data.UpdateStrategyColumnAdapter
diff --git a/data/src/main/java/tachiyomi/data/source/SourcePagingSource.kt b/data/src/main/java/tachiyomi/data/source/SourcePagingSource.kt
index adc1d26a0..fc091c491 100644
--- a/data/src/main/java/tachiyomi/data/source/SourcePagingSource.kt
+++ b/data/src/main/java/tachiyomi/data/source/SourcePagingSource.kt
@@ -5,7 +5,7 @@ import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
import eu.kanade.tachiyomi.source.model.SManga
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.domain.source.repository.SourcePagingSourceType
class SourceSearchPagingSource(source: CatalogueSource, val query: String, val filters: FilterList) :
diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts
index 949de1f8e..dc8c33315 100644
--- a/domain/build.gradle.kts
+++ b/domain/build.gradle.kts
@@ -15,7 +15,7 @@ android {
dependencies {
implementation(projects.sourceApi)
- implementation(projects.core)
+ implementation(projects.core.common)
implementation(platform(kotlinx.coroutines.bom))
implementation(kotlinx.bundles.coroutines)
diff --git a/domain/src/main/java/tachiyomi/domain/backup/service/BackupPreferences.kt b/domain/src/main/java/tachiyomi/domain/backup/service/BackupPreferences.kt
index ba00faa18..41f29392d 100644
--- a/domain/src/main/java/tachiyomi/domain/backup/service/BackupPreferences.kt
+++ b/domain/src/main/java/tachiyomi/domain/backup/service/BackupPreferences.kt
@@ -1,7 +1,7 @@
package tachiyomi.domain.backup.service
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
class BackupPreferences(
private val preferenceStore: PreferenceStore,
diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/CreateCategoryWithName.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/CreateCategoryWithName.kt
index b9528950d..b6b15b83e 100644
--- a/domain/src/main/java/tachiyomi/domain/category/interactor/CreateCategoryWithName.kt
+++ b/domain/src/main/java/tachiyomi/domain/category/interactor/CreateCategoryWithName.kt
@@ -1,8 +1,8 @@
package tachiyomi.domain.category.interactor
import logcat.LogPriority
-import tachiyomi.core.util.lang.withNonCancellableContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withNonCancellableContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.category.model.Category
import tachiyomi.domain.category.repository.CategoryRepository
import tachiyomi.domain.library.service.LibraryPreferences
diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/DeleteCategory.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/DeleteCategory.kt
index 8fee4d982..bf26d959f 100644
--- a/domain/src/main/java/tachiyomi/domain/category/interactor/DeleteCategory.kt
+++ b/domain/src/main/java/tachiyomi/domain/category/interactor/DeleteCategory.kt
@@ -1,8 +1,8 @@
package tachiyomi.domain.category.interactor
import logcat.LogPriority
-import tachiyomi.core.util.lang.withNonCancellableContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withNonCancellableContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.category.model.CategoryUpdate
import tachiyomi.domain.category.repository.CategoryRepository
diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/RenameCategory.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/RenameCategory.kt
index 1cbf5e276..59c4c193e 100644
--- a/domain/src/main/java/tachiyomi/domain/category/interactor/RenameCategory.kt
+++ b/domain/src/main/java/tachiyomi/domain/category/interactor/RenameCategory.kt
@@ -1,8 +1,8 @@
package tachiyomi.domain.category.interactor
import logcat.LogPriority
-import tachiyomi.core.util.lang.withNonCancellableContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withNonCancellableContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.category.model.Category
import tachiyomi.domain.category.model.CategoryUpdate
import tachiyomi.domain.category.repository.CategoryRepository
diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/ReorderCategory.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/ReorderCategory.kt
index 7561f52c8..a64824801 100644
--- a/domain/src/main/java/tachiyomi/domain/category/interactor/ReorderCategory.kt
+++ b/domain/src/main/java/tachiyomi/domain/category/interactor/ReorderCategory.kt
@@ -3,8 +3,8 @@ package tachiyomi.domain.category.interactor
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import logcat.LogPriority
-import tachiyomi.core.util.lang.withNonCancellableContext
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.lang.withNonCancellableContext
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.category.model.Category
import tachiyomi.domain.category.model.CategoryUpdate
import tachiyomi.domain.category.repository.CategoryRepository
diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/SetMangaCategories.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/SetMangaCategories.kt
index 857ea272b..604e3f0d1 100644
--- a/domain/src/main/java/tachiyomi/domain/category/interactor/SetMangaCategories.kt
+++ b/domain/src/main/java/tachiyomi/domain/category/interactor/SetMangaCategories.kt
@@ -1,7 +1,7 @@
package tachiyomi.domain.category.interactor
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.manga.repository.MangaRepository
class SetMangaCategories(
diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/UpdateCategory.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/UpdateCategory.kt
index 65d6d31ce..f3f601ceb 100644
--- a/domain/src/main/java/tachiyomi/domain/category/interactor/UpdateCategory.kt
+++ b/domain/src/main/java/tachiyomi/domain/category/interactor/UpdateCategory.kt
@@ -1,6 +1,6 @@
package tachiyomi.domain.category.interactor
-import tachiyomi.core.util.lang.withNonCancellableContext
+import tachiyomi.core.common.util.lang.withNonCancellableContext
import tachiyomi.domain.category.model.CategoryUpdate
import tachiyomi.domain.category.repository.CategoryRepository
diff --git a/domain/src/main/java/tachiyomi/domain/chapter/interactor/GetChapter.kt b/domain/src/main/java/tachiyomi/domain/chapter/interactor/GetChapter.kt
index 99c628451..4b4b9d94d 100644
--- a/domain/src/main/java/tachiyomi/domain/chapter/interactor/GetChapter.kt
+++ b/domain/src/main/java/tachiyomi/domain/chapter/interactor/GetChapter.kt
@@ -1,7 +1,7 @@
package tachiyomi.domain.chapter.interactor
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.repository.ChapterRepository
diff --git a/domain/src/main/java/tachiyomi/domain/chapter/interactor/GetChaptersByMangaId.kt b/domain/src/main/java/tachiyomi/domain/chapter/interactor/GetChaptersByMangaId.kt
index 66dab15c7..1dee7770e 100644
--- a/domain/src/main/java/tachiyomi/domain/chapter/interactor/GetChaptersByMangaId.kt
+++ b/domain/src/main/java/tachiyomi/domain/chapter/interactor/GetChaptersByMangaId.kt
@@ -1,7 +1,7 @@
package tachiyomi.domain.chapter.interactor
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.repository.ChapterRepository
diff --git a/domain/src/main/java/tachiyomi/domain/chapter/interactor/SetMangaDefaultChapterFlags.kt b/domain/src/main/java/tachiyomi/domain/chapter/interactor/SetMangaDefaultChapterFlags.kt
index ab8eaaa55..4c968b39a 100644
--- a/domain/src/main/java/tachiyomi/domain/chapter/interactor/SetMangaDefaultChapterFlags.kt
+++ b/domain/src/main/java/tachiyomi/domain/chapter/interactor/SetMangaDefaultChapterFlags.kt
@@ -1,6 +1,6 @@
package tachiyomi.domain.chapter.interactor
-import tachiyomi.core.util.lang.withNonCancellableContext
+import tachiyomi.core.common.util.lang.withNonCancellableContext
import tachiyomi.domain.library.service.LibraryPreferences
import tachiyomi.domain.manga.interactor.GetFavorites
import tachiyomi.domain.manga.interactor.SetMangaChapterFlags
diff --git a/domain/src/main/java/tachiyomi/domain/chapter/interactor/UpdateChapter.kt b/domain/src/main/java/tachiyomi/domain/chapter/interactor/UpdateChapter.kt
index 150f6b223..3daaf9010 100644
--- a/domain/src/main/java/tachiyomi/domain/chapter/interactor/UpdateChapter.kt
+++ b/domain/src/main/java/tachiyomi/domain/chapter/interactor/UpdateChapter.kt
@@ -1,7 +1,7 @@
package tachiyomi.domain.chapter.interactor
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.ChapterUpdate
import tachiyomi.domain.chapter.repository.ChapterRepository
diff --git a/domain/src/main/java/tachiyomi/domain/chapter/service/ChapterSort.kt b/domain/src/main/java/tachiyomi/domain/chapter/service/ChapterSort.kt
index d55c51334..795805555 100644
--- a/domain/src/main/java/tachiyomi/domain/chapter/service/ChapterSort.kt
+++ b/domain/src/main/java/tachiyomi/domain/chapter/service/ChapterSort.kt
@@ -1,6 +1,6 @@
package tachiyomi.domain.chapter.service
-import tachiyomi.core.util.lang.compareToWithCollator
+import tachiyomi.core.common.util.lang.compareToWithCollator
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.manga.model.Manga
diff --git a/domain/src/main/java/tachiyomi/domain/download/service/DownloadPreferences.kt b/domain/src/main/java/tachiyomi/domain/download/service/DownloadPreferences.kt
index 84dfaecfe..a0625e5a7 100644
--- a/domain/src/main/java/tachiyomi/domain/download/service/DownloadPreferences.kt
+++ b/domain/src/main/java/tachiyomi/domain/download/service/DownloadPreferences.kt
@@ -1,6 +1,6 @@
package tachiyomi.domain.download.service
-import tachiyomi.core.preference.PreferenceStore
+import tachiyomi.core.common.preference.PreferenceStore
class DownloadPreferences(
private val preferenceStore: PreferenceStore,
diff --git a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt
index 22174c0e2..437dc54bc 100644
--- a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt
+++ b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt
@@ -1,9 +1,9 @@
package tachiyomi.domain.library.service
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.preference.TriState
-import tachiyomi.core.preference.getEnum
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
+import tachiyomi.core.common.preference.TriState
+import tachiyomi.core.common.preference.getEnum
import tachiyomi.domain.library.model.LibraryDisplayMode
import tachiyomi.domain.library.model.LibrarySort
import tachiyomi.domain.manga.model.Manga
diff --git a/domain/src/main/java/tachiyomi/domain/manga/interactor/GetManga.kt b/domain/src/main/java/tachiyomi/domain/manga/interactor/GetManga.kt
index 816dda7ac..d4cad69d6 100644
--- a/domain/src/main/java/tachiyomi/domain/manga/interactor/GetManga.kt
+++ b/domain/src/main/java/tachiyomi/domain/manga/interactor/GetManga.kt
@@ -2,7 +2,7 @@ package tachiyomi.domain.manga.interactor
import kotlinx.coroutines.flow.Flow
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.repository.MangaRepository
diff --git a/domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt b/domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt
index 2b99c29bf..0ffe9856a 100644
--- a/domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt
+++ b/domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt
@@ -2,7 +2,7 @@ package tachiyomi.domain.manga.model
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.model.UpdateStrategy
-import tachiyomi.core.preference.TriState
+import tachiyomi.core.common.preference.TriState
import java.io.Serializable
import java.time.Instant
diff --git a/domain/src/main/java/tachiyomi/domain/manga/model/TriState.kt b/domain/src/main/java/tachiyomi/domain/manga/model/TriState.kt
index 75a21f959..49b834772 100644
--- a/domain/src/main/java/tachiyomi/domain/manga/model/TriState.kt
+++ b/domain/src/main/java/tachiyomi/domain/manga/model/TriState.kt
@@ -1,6 +1,6 @@
package tachiyomi.domain.manga.model
-import tachiyomi.core.preference.TriState
+import tachiyomi.core.common.preference.TriState
inline fun applyFilter(filter: TriState, predicate: () -> Boolean): Boolean = when (filter) {
TriState.DISABLED -> true
diff --git a/domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt b/domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt
index 380da7b1e..e1ba48c79 100644
--- a/domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt
+++ b/domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt
@@ -1,7 +1,7 @@
package tachiyomi.domain.release.interactor
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
import tachiyomi.domain.release.model.Release
import tachiyomi.domain.release.service.ReleaseService
import java.time.Instant
diff --git a/domain/src/main/java/tachiyomi/domain/storage/service/StoragePreferences.kt b/domain/src/main/java/tachiyomi/domain/storage/service/StoragePreferences.kt
index a49a54e3c..f29949cff 100644
--- a/domain/src/main/java/tachiyomi/domain/storage/service/StoragePreferences.kt
+++ b/domain/src/main/java/tachiyomi/domain/storage/service/StoragePreferences.kt
@@ -1,8 +1,8 @@
package tachiyomi.domain.storage.service
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.storage.FolderProvider
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
+import tachiyomi.core.common.storage.FolderProvider
class StoragePreferences(
private val folderProvider: FolderProvider,
diff --git a/domain/src/main/java/tachiyomi/domain/track/interactor/DeleteTrack.kt b/domain/src/main/java/tachiyomi/domain/track/interactor/DeleteTrack.kt
index 2a30e0ffc..4204b3872 100644
--- a/domain/src/main/java/tachiyomi/domain/track/interactor/DeleteTrack.kt
+++ b/domain/src/main/java/tachiyomi/domain/track/interactor/DeleteTrack.kt
@@ -1,7 +1,7 @@
package tachiyomi.domain.track.interactor
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.track.repository.TrackRepository
class DeleteTrack(
diff --git a/domain/src/main/java/tachiyomi/domain/track/interactor/GetTracks.kt b/domain/src/main/java/tachiyomi/domain/track/interactor/GetTracks.kt
index 018d5ffb3..851ecd0ed 100644
--- a/domain/src/main/java/tachiyomi/domain/track/interactor/GetTracks.kt
+++ b/domain/src/main/java/tachiyomi/domain/track/interactor/GetTracks.kt
@@ -2,7 +2,7 @@ package tachiyomi.domain.track.interactor
import kotlinx.coroutines.flow.Flow
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.track.model.Track
import tachiyomi.domain.track.repository.TrackRepository
diff --git a/domain/src/main/java/tachiyomi/domain/track/interactor/InsertTrack.kt b/domain/src/main/java/tachiyomi/domain/track/interactor/InsertTrack.kt
index c9c95d2f1..3277e9b9c 100644
--- a/domain/src/main/java/tachiyomi/domain/track/interactor/InsertTrack.kt
+++ b/domain/src/main/java/tachiyomi/domain/track/interactor/InsertTrack.kt
@@ -1,7 +1,7 @@
package tachiyomi.domain.track.interactor
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.track.model.Track
import tachiyomi.domain.track.repository.TrackRepository
diff --git a/domain/src/test/java/tachiyomi/domain/release/interactor/GetApplicationReleaseTest.kt b/domain/src/test/java/tachiyomi/domain/release/interactor/GetApplicationReleaseTest.kt
index f813094fe..fe564050a 100644
--- a/domain/src/test/java/tachiyomi/domain/release/interactor/GetApplicationReleaseTest.kt
+++ b/domain/src/test/java/tachiyomi/domain/release/interactor/GetApplicationReleaseTest.kt
@@ -8,8 +8,8 @@ import io.mockk.mockk
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.PreferenceStore
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.PreferenceStore
import tachiyomi.domain.release.model.Release
import tachiyomi.domain.release.service.ReleaseService
import java.time.Instant
diff --git a/presentation-core/build.gradle.kts b/presentation-core/build.gradle.kts
index 59a97d0fe..cfae8ba2a 100644
--- a/presentation-core/build.gradle.kts
+++ b/presentation-core/build.gradle.kts
@@ -21,7 +21,7 @@ android {
}
dependencies {
- api(projects.core)
+ api(projects.core.common)
api(projects.i18n)
// Compose
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt
index d29d44b88..abdf61c9f 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt
@@ -43,9 +43,9 @@ import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.unit.dp
import dev.icerock.moko.resources.StringResource
-import tachiyomi.core.preference.Preference
-import tachiyomi.core.preference.TriState
-import tachiyomi.core.preference.toggle
+import tachiyomi.core.common.preference.Preference
+import tachiyomi.core.common.preference.TriState
+import tachiyomi.core.common.preference.toggle
import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.theme.header
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/i18n/Localize.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/i18n/Localize.kt
index 081281f7f..93013ba2b 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/i18n/Localize.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/i18n/Localize.kt
@@ -5,8 +5,8 @@ import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.ui.platform.LocalContext
import dev.icerock.moko.resources.PluralsResource
import dev.icerock.moko.resources.StringResource
-import tachiyomi.core.i18n.pluralStringResource
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.pluralStringResource
+import tachiyomi.core.common.i18n.stringResource
@Composable
@ReadOnlyComposable
diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/util/Preference.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/util/Preference.kt
index c68818927..4b7a5018a 100644
--- a/presentation-core/src/main/java/tachiyomi/presentation/core/util/Preference.kt
+++ b/presentation-core/src/main/java/tachiyomi/presentation/core/util/Preference.kt
@@ -4,7 +4,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.remember
-import tachiyomi.core.preference.Preference
+import tachiyomi.core.common.preference.Preference
@Composable
fun Preference.collectAsState(): State {
diff --git a/presentation-widget/build.gradle.kts b/presentation-widget/build.gradle.kts
index 21a0a4bbd..896979d98 100644
--- a/presentation-widget/build.gradle.kts
+++ b/presentation-widget/build.gradle.kts
@@ -21,7 +21,7 @@ android {
}
dependencies {
- implementation(projects.core)
+ implementation(projects.core.common)
implementation(projects.domain)
implementation(projects.presentationCore)
api(projects.i18n)
diff --git a/presentation-widget/src/main/java/tachiyomi/presentation/widget/BaseUpdatesGridGlanceWidget.kt b/presentation-widget/src/main/java/tachiyomi/presentation/widget/BaseUpdatesGridGlanceWidget.kt
index 76d84aee1..e4977bfd3 100644
--- a/presentation-widget/src/main/java/tachiyomi/presentation/widget/BaseUpdatesGridGlanceWidget.kt
+++ b/presentation-widget/src/main/java/tachiyomi/presentation/widget/BaseUpdatesGridGlanceWidget.kt
@@ -33,7 +33,7 @@ import eu.kanade.tachiyomi.util.system.dpToPx
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.flow.map
-import tachiyomi.core.util.lang.withIOContext
+import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.domain.manga.model.MangaCover
import tachiyomi.domain.updates.interactor.GetUpdates
import tachiyomi.domain.updates.model.UpdatesWithRelations
diff --git a/presentation-widget/src/main/java/tachiyomi/presentation/widget/WidgetManager.kt b/presentation-widget/src/main/java/tachiyomi/presentation/widget/WidgetManager.kt
index 285ba7b13..eda0ff0a1 100644
--- a/presentation-widget/src/main/java/tachiyomi/presentation/widget/WidgetManager.kt
+++ b/presentation-widget/src/main/java/tachiyomi/presentation/widget/WidgetManager.kt
@@ -9,7 +9,7 @@ import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.updates.interactor.GetUpdates
class WidgetManager(
diff --git a/presentation-widget/src/main/java/tachiyomi/presentation/widget/components/LockedWidget.kt b/presentation-widget/src/main/java/tachiyomi/presentation/widget/components/LockedWidget.kt
index 20096ccbf..afa422abf 100644
--- a/presentation-widget/src/main/java/tachiyomi/presentation/widget/components/LockedWidget.kt
+++ b/presentation-widget/src/main/java/tachiyomi/presentation/widget/components/LockedWidget.kt
@@ -15,7 +15,7 @@ import androidx.glance.text.Text
import androidx.glance.text.TextAlign
import androidx.glance.text.TextStyle
import androidx.glance.unit.ColorProvider
-import tachiyomi.core.Constants
+import tachiyomi.core.common.Constants
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
diff --git a/presentation-widget/src/main/java/tachiyomi/presentation/widget/components/UpdatesWidget.kt b/presentation-widget/src/main/java/tachiyomi/presentation/widget/components/UpdatesWidget.kt
index d31528170..e90e07983 100644
--- a/presentation-widget/src/main/java/tachiyomi/presentation/widget/components/UpdatesWidget.kt
+++ b/presentation-widget/src/main/java/tachiyomi/presentation/widget/components/UpdatesWidget.kt
@@ -22,7 +22,7 @@ import androidx.glance.text.Text
import androidx.glance.text.TextStyle
import androidx.glance.unit.ColorProvider
import kotlinx.collections.immutable.ImmutableList
-import tachiyomi.core.Constants
+import tachiyomi.core.common.Constants
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.widget.util.calculateRowAndColumnCount
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 42b473db8..b1a2a2dd5 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -39,13 +39,13 @@ enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
rootProject.name = "Mihon"
include(":app")
-include(":i18n")
-include(":source-api")
-include(":core")
-include(":macrobenchmark")
+include(":core-metadata")
+include(":core:common")
include(":data")
include(":domain")
-include(":presentation-widget")
+include(":i18n")
+include(":macrobenchmark")
include(":presentation-core")
+include(":presentation-widget")
+include(":source-api")
include(":source-local")
-include(":core-metadata")
diff --git a/source-api/build.gradle.kts b/source-api/build.gradle.kts
index 125252def..209136e48 100644
--- a/source-api/build.gradle.kts
+++ b/source-api/build.gradle.kts
@@ -17,7 +17,7 @@ kotlin {
}
val androidMain by getting {
dependencies {
- implementation(projects.core)
+ implementation(projects.core.common)
api(libs.preferencektx)
// Workaround for https://youtrack.jetbrains.com/issue/KT-57605
diff --git a/source-api/src/androidMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt b/source-api/src/androidMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt
index 6938bb406..43fe01d83 100644
--- a/source-api/src/androidMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt
+++ b/source-api/src/androidMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt
@@ -1,6 +1,6 @@
package eu.kanade.tachiyomi.util
import rx.Observable
-import tachiyomi.core.util.lang.awaitSingle
+import tachiyomi.core.common.util.lang.awaitSingle
actual suspend fun Observable.awaitSingle(): T = awaitSingle()
diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/CatalogueSource.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/CatalogueSource.kt
index 937fa28a9..9be673541 100644
--- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/CatalogueSource.kt
+++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/CatalogueSource.kt
@@ -3,7 +3,7 @@ package eu.kanade.tachiyomi.source
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
import rx.Observable
-import tachiyomi.core.util.lang.awaitSingle
+import tachiyomi.core.common.util.lang.awaitSingle
interface CatalogueSource : Source {
diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSource.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSource.kt
index 3a079953b..7ffa538b5 100644
--- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSource.kt
+++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSource.kt
@@ -16,7 +16,7 @@ import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import rx.Observable
-import tachiyomi.core.util.lang.awaitSingle
+import tachiyomi.core.common.util.lang.awaitSingle
import uy.kohesive.injekt.injectLazy
import java.net.URI
import java.net.URISyntaxException
diff --git a/source-local/build.gradle.kts b/source-local/build.gradle.kts
index 75739a8d7..b30b8acd4 100644
--- a/source-local/build.gradle.kts
+++ b/source-local/build.gradle.kts
@@ -17,7 +17,7 @@ kotlin {
}
val androidMain by getting {
dependencies {
- implementation(projects.core)
+ implementation(projects.core.common)
implementation(projects.coreMetadata)
// Move ChapterRecognition to separate module?
diff --git a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
index 93bb2ec6f..e33dbbf5f 100644
--- a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
+++ b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
@@ -18,18 +18,18 @@ import kotlinx.serialization.json.decodeFromStream
import logcat.LogPriority
import nl.adaptivity.xmlutil.AndroidXmlReader
import nl.adaptivity.xmlutil.serialization.XML
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.core.metadata.comicinfo.COMIC_INFO_FILE
import tachiyomi.core.metadata.comicinfo.ComicInfo
import tachiyomi.core.metadata.comicinfo.copyFromComicInfo
import tachiyomi.core.metadata.comicinfo.getComicInfo
import tachiyomi.core.metadata.tachiyomi.MangaDetails
-import tachiyomi.core.storage.UniFileTempFileManager
-import tachiyomi.core.storage.extension
-import tachiyomi.core.storage.nameWithoutExtension
-import tachiyomi.core.util.lang.withIOContext
-import tachiyomi.core.util.system.ImageUtil
-import tachiyomi.core.util.system.logcat
+import tachiyomi.core.common.storage.UniFileTempFileManager
+import tachiyomi.core.common.storage.extension
+import tachiyomi.core.common.storage.nameWithoutExtension
+import tachiyomi.core.common.util.lang.withIOContext
+import tachiyomi.core.common.util.system.ImageUtil
+import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.service.ChapterRecognition
import tachiyomi.domain.manga.model.Manga
import tachiyomi.i18n.MR
diff --git a/source-local/src/androidMain/kotlin/tachiyomi/source/local/filter/OrderBy.kt b/source-local/src/androidMain/kotlin/tachiyomi/source/local/filter/OrderBy.kt
index 9be063b9a..956cceeee 100644
--- a/source-local/src/androidMain/kotlin/tachiyomi/source/local/filter/OrderBy.kt
+++ b/source-local/src/androidMain/kotlin/tachiyomi/source/local/filter/OrderBy.kt
@@ -2,7 +2,7 @@ package tachiyomi.source.local.filter
import android.content.Context
import eu.kanade.tachiyomi.source.model.Filter
-import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
sealed class OrderBy(context: Context, selection: Selection) : Filter.Sort(
diff --git a/source-local/src/androidMain/kotlin/tachiyomi/source/local/image/LocalCoverManager.kt b/source-local/src/androidMain/kotlin/tachiyomi/source/local/image/LocalCoverManager.kt
index 0f5a4c343..a54e3e7e4 100644
--- a/source-local/src/androidMain/kotlin/tachiyomi/source/local/image/LocalCoverManager.kt
+++ b/source-local/src/androidMain/kotlin/tachiyomi/source/local/image/LocalCoverManager.kt
@@ -4,8 +4,8 @@ import android.content.Context
import com.hippo.unifile.UniFile
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.util.storage.DiskUtil
-import tachiyomi.core.storage.nameWithoutExtension
-import tachiyomi.core.util.system.ImageUtil
+import tachiyomi.core.common.storage.nameWithoutExtension
+import tachiyomi.core.common.util.system.ImageUtil
import tachiyomi.source.local.io.LocalSourceFileSystem
import java.io.InputStream
diff --git a/source-local/src/commonMain/kotlin/tachiyomi/source/local/io/Archive.kt b/source-local/src/commonMain/kotlin/tachiyomi/source/local/io/Archive.kt
index a8f5a0740..e968adc7d 100644
--- a/source-local/src/commonMain/kotlin/tachiyomi/source/local/io/Archive.kt
+++ b/source-local/src/commonMain/kotlin/tachiyomi/source/local/io/Archive.kt
@@ -1,7 +1,7 @@
package tachiyomi.source.local.io
import com.hippo.unifile.UniFile
-import tachiyomi.core.storage.extension
+import tachiyomi.core.common.storage.extension
object Archive {
diff --git a/source-local/src/commonMain/kotlin/tachiyomi/source/local/io/Format.kt b/source-local/src/commonMain/kotlin/tachiyomi/source/local/io/Format.kt
index 0f29ae8ab..5b22e41e2 100644
--- a/source-local/src/commonMain/kotlin/tachiyomi/source/local/io/Format.kt
+++ b/source-local/src/commonMain/kotlin/tachiyomi/source/local/io/Format.kt
@@ -1,7 +1,7 @@
package tachiyomi.source.local.io
import com.hippo.unifile.UniFile
-import tachiyomi.core.storage.extension
+import tachiyomi.core.common.storage.extension
sealed interface Format {
data class Directory(val file: UniFile) : Format
From 79f46b25f663c7f49fbd4e292f0f5f210e266dc9 Mon Sep 17 00:00:00 2001
From: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com>
Date: Mon, 29 Jan 2024 22:08:28 +0500
Subject: [PATCH 032/212] Fix new extension install not registering in app.
(#275)
* Fix extension install not registering
* fix duplicate key compose error on extension update
* fix doubling of extension after update
* not needed
---
.../eu/kanade/tachiyomi/extension/ExtensionManager.kt | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
index d8f56b878..4a5eff1ac 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
@@ -340,9 +340,12 @@ class ExtensionManager(
override fun onExtensionUntrusted(extension: Extension.Untrusted) {
val installedExtension = _installedExtensionsFlow.value
.find { it.pkgName == extension.pkgName }
- ?: return
- _installedExtensionsFlow.value -= installedExtension
- _untrustedExtensionsFlow.value += extension
+
+ if (installedExtension != null) {
+ _installedExtensionsFlow.value -= installedExtension
+ } else {
+ _untrustedExtensionsFlow.value += extension
+ }
}
override fun onPackageUninstalled(pkgName: String) {
From b2d22f86c647e24eed6d9b19f36ac2c444525c87 Mon Sep 17 00:00:00 2001
From: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
Date: Mon, 29 Jan 2024 21:14:42 +0600
Subject: [PATCH 033/212] Lint
---
app/src/main/java/eu/kanade/domain/manga/model/Manga.kt | 2 +-
.../main/java/eu/kanade/tachiyomi/data/download/Downloader.kt | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt b/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
index 5334b598e..1b9dd62c8 100644
--- a/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
+++ b/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
@@ -5,9 +5,9 @@ import eu.kanade.tachiyomi.data.cache.CoverCache
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation
import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode
+import tachiyomi.core.common.preference.TriState
import tachiyomi.core.metadata.comicinfo.ComicInfo
import tachiyomi.core.metadata.comicinfo.ComicInfoPublishingStatus
-import tachiyomi.core.common.preference.TriState
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.manga.model.Manga
import uy.kohesive.injekt.Injekt
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
index 8fb9ab14d..facbe605a 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
@@ -41,14 +41,14 @@ import logcat.LogPriority
import nl.adaptivity.xmlutil.serialization.XML
import okhttp3.Response
import tachiyomi.core.common.i18n.stringResource
-import tachiyomi.core.metadata.comicinfo.COMIC_INFO_FILE
-import tachiyomi.core.metadata.comicinfo.ComicInfo
import tachiyomi.core.common.storage.extension
import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.core.common.util.lang.launchNow
import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.core.common.util.system.ImageUtil
import tachiyomi.core.common.util.system.logcat
+import tachiyomi.core.metadata.comicinfo.COMIC_INFO_FILE
+import tachiyomi.core.metadata.comicinfo.ComicInfo
import tachiyomi.domain.category.interactor.GetCategories
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.download.service.DownloadPreferences
From 63146e717ba2cf178b79ae3de4b9b15b0ecc788f Mon Sep 17 00:00:00 2001
From: "Weblate (bot)"
Date: Mon, 29 Jan 2024 21:31:16 +0100
Subject: [PATCH 034/212] Translations update from Hosted Weblate (#269)
* Translated using Weblate (Persian)
Currently translated at 84.8% (673 of 793 strings)
Translation: Mihon/Mihon
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/fa/
* Translated using Weblate (Finnish)
Currently translated at 85.3% (677 of 793 strings)
Translation: Mihon/Mihon
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon/fi/
* Translated using Weblate (Chuvash)
Currently translated at 88.2% (15 of 17 strings)
Translation: Mihon/Mihon Plurals
Translate-URL: https://hosted.weblate.org/projects/mihon/mihon-plurals/cv/
---------
Co-authored-by: Arash
Co-authored-by: A
Co-authored-by: C201
---
.../commonMain/resources/MR/cv/plurals.xml | 2 +-
.../commonMain/resources/MR/fa/strings.xml | 18 +++++++
.../commonMain/resources/MR/fi/strings.xml | 53 +++++++++++++++----
3 files changed, 62 insertions(+), 11 deletions(-)
diff --git a/i18n/src/commonMain/resources/MR/cv/plurals.xml b/i18n/src/commonMain/resources/MR/cv/plurals.xml
index 9cc1c822f..b96d0872c 100644
--- a/i18n/src/commonMain/resources/MR/cv/plurals.xml
+++ b/i18n/src/commonMain/resources/MR/cv/plurals.xml
@@ -41,7 +41,7 @@
- %d сӑнану
- - 1 сыпӑк ҫук
+ - %d сыпӑк ҫук
- %d сыпӑк ҫук
diff --git a/i18n/src/commonMain/resources/MR/fa/strings.xml b/i18n/src/commonMain/resources/MR/fa/strings.xml
index 3466ae242..ba003bb23 100644
--- a/i18n/src/commonMain/resources/MR/fa/strings.xml
+++ b/i18n/src/commonMain/resources/MR/fa/strings.xml
@@ -658,4 +658,22 @@
شما هیچ مخزنی برای تنظیم ندارید.
مخزن منبع باز
مقدار رد باقی مانده در نمایش گر های E-ink کاهش میابد
+ انتخاب یک پوشه
+ یک پوشه باید انتخاب شود
+ راهنمای زخیره سازی
+ مجوز نصب برنامه ها
+ ایجاد کردن
+ خطای کامل:
+ تنظیمات برنامه
+ تنظیمات منبع
+ حاوی تنظیمات حساس (یه عنوان مثال رمز ورود ناظر)
+ فایل پشتیبانی ایجاد نشد
+ استفاده از فظای زخیره سازی
+ در دسترس: %1$s / کل:%2$s
+ هنگام راهاندازی برنامه، حافظه پنهان قسمت را پاک کنید
+ درحال همگام سازی کتاب خانه
+ قابل استفاده برای به روز رسانی خودکار، بارگیری قسمت ها، و منابع محلی.
+ آخرین پشتیبان گیری خودکار: %s
+ DNS بیش از HTTPS (DoH)
+ همگام سازی کتاب خانه کامل شد
\ No newline at end of file
diff --git a/i18n/src/commonMain/resources/MR/fi/strings.xml b/i18n/src/commonMain/resources/MR/fi/strings.xml
index 1eec93175..24e863234 100644
--- a/i18n/src/commonMain/resources/MR/fi/strings.xml
+++ b/i18n/src/commonMain/resources/MR/fi/strings.xml
@@ -141,11 +141,9 @@
Luottamaton
Poista asennus
Luottamattomat laajennokset
- Tämä laajennus on allekirjoitettu luottamattomalla sertifikaatilla ja sitä ei ole aktivoitu.
+ Haitallinen laajennus voi lukea tallennetut kirjautumistiedot Mihonista tai suorittaa luvatonta koodia.
\n
-\nHaitallinen laajennus voisi lukea mahdolliset kirjautumistiedot Mihonista tai suorittaa luvatonta koodia.
-\n
-\nLuottamalla tähän sertifikaattiin hyväksyt nämä riskit.
+\nLuottamalla tähän laajennokseen hyväksyt nämä riskit.
Koko näyttö
Animoi sivusiirtymät
Tuplanäpäytyksen animaation nopeus
@@ -201,7 +199,7 @@
Neljänneksi viimeinen luku
Viidenneksi viimeinen luku
Lataa uudet luvut
- Palvelut
+ Seurantapalvelut
Voidaan käyttää nykyisen kirjaston palauttamiseen
Palauta kirjasto varmuuskopiointi-tiedostosta
Varmuuskopioinnin tiheys
@@ -290,7 +288,7 @@
Päivitä
Kirjasto
Vanhentunut
- Tämä laajennus ei ole enää saatavilla.
+ Tämä laajennos ei ole enää saatavilla. Se ei välttämättä toimi oikein ja voi aiheuttaa ongelmia Mihonin kanssa. Laajennoksen poistoa suositellaan.
Päivämäärän muoto
Globaali päivitys
Kirjaa ulos kohteesta %1$s\?
@@ -374,7 +372,7 @@
Tiedot
Puuttuvat lähteet:
Varmuuskopio ei sisällä mangaa.
- Virheellinen varmuuskopio
+ Virheellinen varmuuskopio:
Tarkista uusi kansi ja tiedot päivitettäessä kirjastoa
Päivitä metatiedot automaattisesti
Siirrä
@@ -412,7 +410,7 @@
Seurantapalvelimet joihin et ole kirjautunut sisään:
Poista kirjanmerkityt luvut
Poista luvut
- Voi sisältää NSFW (18+) -sisältöä
+ Tämän laajennoksen lähteet voivat sisältää NSFW (18+) -sisältöä
18+
Tämä ei estä epävirallisia tai mahdollisesti väärin merkittyjä laajennuksia näyttämästä NSFW 18+ sisältöä sovelluksessa.
Lukuja ei löytynyt
@@ -538,7 +536,7 @@
Viimeisin manga päivitys
Lukemattomien määrä
Poista kategoria
- Jäljitä
+ Seuraa
Alhainen
Poissuljetut kategoriat
Alhaisin
@@ -594,7 +592,7 @@
Poista kaikkien sarjojen lukutila ja lukusuunta
Peruttu
Sivun %d tiedostopolkua ei löytynyt
- Parannetut palvelut
+ Parannetut seurantapalvelut
Lukijan asetuksia ei voitu poistaa
Järjestä
Kansikuva
@@ -646,4 +644,39 @@
Haluatko järjestää kategoriat aakkosjärjestykseen?
Kopioi leikepöydälle
Siirrä sarja pohjimmaiseksi
+ Ei nyt
+ Sisäinen virhe: Lisätietoja saat kaatumisen lokitiedoista
+ Akun käyttö taustalla
+ Lukutila, näyttö, navigointi
+ Lähteet, laajennokset, globaali haku
+ Manuaaliset ja automaattiset varmuuskopiot, tallennustila
+ Applikaation lukko, turvallinen ruutu
+ Kaatumislokien vedos, akun optimoinnit
+ Pohjoismainen
+ Suhteelliset aikaleimat
+ Käytä muotoa \"%1$s\", kuin muotoa \"%2$s\"
+ Laajennosten asentamiseen tarvitaan lupia. Napauta tästä myöntääksesi luvat.
+ Lisää laajennosten lähde
+ Laajennosten lähteen URL
+ Lisää laajennosten lähteitä Mihoniin. URL-osoitteen tulisi päättyä \"index.min.json\".
+ Tämä laajennosten lähde on jo lisättynä!
+ Poista laajennosten lähde
+ Epäkelpo laajennosten lähteen URL-osoite
+ Haluatko poistaa laajennosten lähteen \"%s\"?
+ Peilaa käännetyt leveät sivut
+ Tuplanapauta lähentääksesi
+ Vähentää haamujälkiä e-paperi näytöillä
+ Ohita kaksoisluvut
+ Jaa korkeat kuvat
+ Luo
+ Sovita leveät sivut kääntämällä
+ Valikon piilottamisen herkkyys vierittäessä
+ Väläytä näyttöä sivunvaihdon yhteydessä
+ Käytetään automaattisille varmuuskopioille, lukujen latauksille ja paikallisille lähteille.
+ Vältä keskeytyksiä pitkään jatkuvissa toimenpiteissä, kuten kirjaston päivitys, lataukset, ja varmuuskopion palautukset.
+ %d per rivi
+ Teema, ajan ja päivämäärän formaatti
+ Automaattinen lataus, ennakkolataus
+ Yksisuuntainen synkronointi, paranneltu synkronointi
+ Kategoriat, globaalit päivitykset, luvun pyyhkäisy
\ No newline at end of file
From ddbe8efbc5cb0665be0775b128e70ace8cee2b12 Mon Sep 17 00:00:00 2001
From: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
Date: Tue, 30 Jan 2024 01:49:51 +0600
Subject: [PATCH 035/212] [skip ci] Increase size of the message indicating
which apk to download
---
.github/workflows/build_push.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml
index 1d14c640b..ba6b8638d 100644
--- a/.github/workflows/build_push.yml
+++ b/.github/workflows/build_push.yml
@@ -99,7 +99,7 @@ jobs:
| x86 | ${{ env.APK_X86_SHA }} |
| x86_64 | ${{ env.APK_X86_64_SHA }} |
- If you are unsure which version to choose then go with mihon-${{ env.VERSION_TAG }}.apk
+ ## If you are unsure which version to choose then go with mihon-${{ env.VERSION_TAG }}.apk
files: |
mihon-${{ env.VERSION_TAG }}.apk
mihon-arm64-v8a-${{ env.VERSION_TAG }}.apk
From 0f4de03d7a77b52490dc9a95e96a308b93b26e4f Mon Sep 17 00:00:00 2001
From: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
Date: Tue, 30 Jan 2024 02:22:29 +0600
Subject: [PATCH 036/212] Don't throw `MALTokenExpired` whenever we fail to
refresh MAL token
Also cleanup
---
.../myanimelist/MyAnimeListInterceptor.kt | 60 +++++++++----------
.../track/myanimelist/MyAnimeListModels.kt | 12 ++--
2 files changed, 34 insertions(+), 38 deletions(-)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListInterceptor.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListInterceptor.kt
index caabcf416..b56a10e46 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListInterceptor.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListInterceptor.kt
@@ -21,9 +21,8 @@ class MyAnimeListInterceptor(private val myanimelist: MyAnimeList) : Interceptor
}
val originalRequest = chain.request()
- // Refresh access token if expired
- if (oauth != null && oauth!!.isExpired()) {
- setAuth(refreshToken(chain))
+ if (oauth?.isExpired() == true) {
+ refreshToken(chain)
}
if (oauth == null) {
@@ -36,27 +35,7 @@ class MyAnimeListInterceptor(private val myanimelist: MyAnimeList) : Interceptor
.header("User-Agent", "Mihon v${BuildConfig.VERSION_NAME} (${BuildConfig.APPLICATION_ID})")
.build()
- val response = chain.proceed(authRequest)
- val tokenIsExpired = response.headers["www-authenticate"]
- ?.contains("The access token expired") ?: false
-
- // Retry the request once with a new token in case it was not already refreshed
- // by the is expired check before.
- if (response.code == 401 && tokenIsExpired) {
- response.close()
-
- val newToken = refreshToken(chain)
- setAuth(newToken)
-
- val newRequest = originalRequest.newBuilder()
- .addHeader("Authorization", "Bearer ${newToken.access_token}")
- .header("User-Agent", "Mihon v${BuildConfig.VERSION_NAME} (${BuildConfig.APPLICATION_ID})")
- .build()
-
- return chain.proceed(newRequest)
- }
-
- return response
+ return chain.proceed(authRequest)
}
/**
@@ -68,22 +47,37 @@ class MyAnimeListInterceptor(private val myanimelist: MyAnimeList) : Interceptor
myanimelist.saveOAuth(oauth)
}
- private fun refreshToken(chain: Interceptor.Chain): OAuth {
+ private fun refreshToken(chain: Interceptor.Chain): OAuth = synchronized(this) {
+ if (tokenExpired) throw MALTokenExpired()
+ oauth?.takeUnless { it.isExpired() }?.let { return@synchronized it }
+
+ val response = try {
+ chain.proceed(MyAnimeListApi.refreshTokenRequest(oauth!!))
+ } catch (_: Throwable) {
+ throw MALTokenRefreshFailed()
+ }
+
+ if (response.code == 401) {
+ myanimelist.setAuthExpired()
+ throw MALTokenExpired()
+ }
+
return runCatching {
- val oauthResponse = chain.proceed(MyAnimeListApi.refreshTokenRequest(oauth!!))
- if (oauthResponse.code == 401) {
- myanimelist.setAuthExpired()
- }
- if (oauthResponse.isSuccessful) {
- with(json) { oauthResponse.parseAs() }
+ if (response.isSuccessful) {
+ with(json) { response.parseAs() }
} else {
- oauthResponse.close()
+ response.close()
null
}
}
.getOrNull()
- ?: throw MALTokenExpired()
+ ?.also {
+ this.oauth = it
+ myanimelist.saveOAuth(it)
+ }
+ ?: throw MALTokenRefreshFailed()
}
}
+class MALTokenRefreshFailed : IOException("MAL: Failed to refresh account token")
class MALTokenExpired : IOException("MAL: Login has expired")
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListModels.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListModels.kt
index dea4231b3..1ae02142f 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListModels.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListModels.kt
@@ -5,14 +5,16 @@ import kotlinx.serialization.Serializable
@Serializable
data class OAuth(
+ val token_type: String,
val refresh_token: String,
val access_token: String,
- val token_type: String,
- val created_at: Long = System.currentTimeMillis(),
val expires_in: Long,
-)
-
-fun OAuth.isExpired() = System.currentTimeMillis() > created_at + (expires_in * 1000)
+ val created_at: Long = System.currentTimeMillis(),
+) {
+ // Assumes expired a minute earlier
+ private val adjustedExpiresIn: Long = (expires_in - 60) * 1000
+ fun isExpired() = created_at + adjustedExpiresIn < System.currentTimeMillis()
+}
fun Track.toMyAnimeListStatus() = when (status) {
MyAnimeList.READING -> "reading"
From 1581b876cfc9d98620e164a48084be88c348457e Mon Sep 17 00:00:00 2001
From: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
Date: Tue, 30 Jan 2024 02:29:18 +0600
Subject: [PATCH 037/212] Remove old `ISSUE_TEMPLATE.md`
---
.github/ISSUE_TEMPLATE.md | 34 ----------------------------------
1 file changed, 34 deletions(-)
delete mode 100644 .github/ISSUE_TEMPLATE.md
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
deleted file mode 100644
index 01cf0e1d0..000000000
--- a/.github/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,34 +0,0 @@
-**PLEASE READ THIS**
-
-I acknowledge that:
-
-- I have updated:
- - To the latest version of the app (stable is v0.15.3)
- - All extensions
-- I have gone through the FAQ (https://mihon.app/docs/faq/general) and troubleshooting guide (https://mihon.app/docs/guides/troubleshooting/)
-- If this is an issue with an official extension, that I should be opening an issue in https://github.com/tachiyomiorg/extensions
-- I have searched the existing issues and this is new ticket **NOT** a duplicate or related to another open or closed issue
-- I will fill out the title and the information in this template
-
-Note that the issue will be automatically closed if you do not fill out the title or requested information.
-
-**DELETE THIS SECTION IF YOU HAVE READ AND ACKNOWLEDGED IT**
-
----
-
-## Device information
-* Tachiyomi version: ?
-* Android version: ?
-* Device: ?
-
-## Steps to reproduce
-1. First step
-2. Second step
-
-## Issue/Request
-?
-
-## Other details
-Additional details and attachments.
-
-If you're experiencing crashes, share the crash logs from More → Settings → Advanced → Dump crash logs.
From 139663acfca72b89bd9f560bf4c0c8a9155ce108 Mon Sep 17 00:00:00 2001
From: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
Date: Tue, 30 Jan 2024 02:31:38 +0600
Subject: [PATCH 038/212] Release v0.16.3
---
.github/ISSUE_TEMPLATE/report_issue.yml | 4 ++--
.github/ISSUE_TEMPLATE/request_feature.yml | 2 +-
app/build.gradle.kts | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/report_issue.yml b/.github/ISSUE_TEMPLATE/report_issue.yml
index ccf4547e3..8fac5785f 100644
--- a/.github/ISSUE_TEMPLATE/report_issue.yml
+++ b/.github/ISSUE_TEMPLATE/report_issue.yml
@@ -53,7 +53,7 @@ body:
label: Mihon version
description: You can find your Mihon version in **More → About**.
placeholder: |
- Example: "0.16.2"
+ Example: "0.16.3"
validations:
required: true
@@ -96,7 +96,7 @@ body:
required: true
- label: I have gone through the [FAQ](https://mihon.app/docs/faq/general) and [troubleshooting guide](https://mihon.app/docs/guides/troubleshooting/).
required: true
- - label: I have updated the app to version **[0.16.2](https://github.com/mihonapp/mihon/releases/latest)**.
+ - label: I have updated the app to version **[0.16.3](https://github.com/mihonapp/mihon/releases/latest)**.
required: true
- label: I have updated all installed extensions.
required: true
diff --git a/.github/ISSUE_TEMPLATE/request_feature.yml b/.github/ISSUE_TEMPLATE/request_feature.yml
index 35220c01c..2c6d324c9 100644
--- a/.github/ISSUE_TEMPLATE/request_feature.yml
+++ b/.github/ISSUE_TEMPLATE/request_feature.yml
@@ -31,7 +31,7 @@ body:
required: true
- label: I have written a short but informative title.
required: true
- - label: I have updated the app to version **[0.16.2](https://github.com/mihonapp/mihon/releases/latest)**.
+ - label: I have updated the app to version **[0.16.3](https://github.com/mihonapp/mihon/releases/latest)**.
required: true
- label: I will fill out all of the requested information in this form.
required: true
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 3c5e630fa..705981b4b 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -22,8 +22,8 @@ android {
defaultConfig {
applicationId = "app.mihon"
- versionCode = 3
- versionName = "0.16.2"
+ versionCode = 4
+ versionName = "0.16.3"
buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"")
buildConfigField("String", "COMMIT_SHA", "\"${getGitSha()}\"")
From 170daf9fb2e566fea598eb5dc0cd710f979c7b7a Mon Sep 17 00:00:00 2001
From: pabalaba
Date: Thu, 1 Feb 2024 21:20:28 +0100
Subject: [PATCH 039/212] Update workflow dependencies (#310)
* feat: updated build_pull_request actions version
* feat: updated build_push actions version
* feat: updated issue_moderator action version
* feat: updated deprecated arguments in build_pull_request
* feat: updated deprecated arguments in build_push
* feat: removed explicit declaration of gradle version
---
.github/workflows/build_pull_request.yml | 11 ++++++-----
.github/workflows/build_push.yml | 9 +++++----
.github/workflows/issue_moderator.yml | 2 +-
3 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml
index 6ba66a5e7..56ac46c79 100644
--- a/.github/workflows/build_pull_request.yml
+++ b/.github/workflows/build_pull_request.yml
@@ -23,10 +23,10 @@ jobs:
uses: actions/checkout@v4
- name: Validate Gradle Wrapper
- uses: gradle/wrapper-validation-action@v1
+ uses: gradle/wrapper-validation-action@v2
- name: Dependency Review
- uses: actions/dependency-review-action@v3
+ uses: actions/dependency-review-action@v4
- name: Set up JDK
uses: actions/setup-java@v4
@@ -34,7 +34,8 @@ jobs:
java-version: 17
distribution: adopt
+ - name: Set up gradle
+ uses: gradle/actions/setup-gradle@v3
+
- name: Build app and run unit tests
- uses: gradle/gradle-command-action@v2
- with:
- arguments: detekt assembleStandardRelease testReleaseUnitTest
+ run: ./gradlew detekt assembleStandardRelease testReleaseUnitTest
diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml
index ba6b8638d..0f400fbbf 100644
--- a/.github/workflows/build_push.yml
+++ b/.github/workflows/build_push.yml
@@ -20,7 +20,7 @@ jobs:
uses: actions/checkout@v4
- name: Validate Gradle Wrapper
- uses: gradle/wrapper-validation-action@v1
+ uses: gradle/wrapper-validation-action@v2
- name: Setup Android SDK
run: |
@@ -32,10 +32,11 @@ jobs:
java-version: 17
distribution: adopt
+ - name: Set up gradle
+ uses: gradle/actions/setup-gradle@v3
+
- name: Build app and run unit tests
- uses: gradle/gradle-command-action@v2
- with:
- arguments: detekt assembleStandardRelease testReleaseUnitTest
+ run: ./gradlew detekt assembleStandardRelease testReleaseUnitTest
# Sign APK and create release for tags
diff --git a/.github/workflows/issue_moderator.yml b/.github/workflows/issue_moderator.yml
index 6a069e5c4..c0859d10e 100644
--- a/.github/workflows/issue_moderator.yml
+++ b/.github/workflows/issue_moderator.yml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Moderate issues
- uses: tachiyomiorg/issue-moderator-action@v2
+ uses: tachiyomiorg/issue-moderator-action@v2.6.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
duplicate-label: Duplicate
From 0da7ad6f1a15e8462d8270fc36ea9f135c3b8d29 Mon Sep 17 00:00:00 2001
From: FooIbar <118464521+FooIbar@users.noreply.github.com>
Date: Sun, 4 Feb 2024 01:33:18 +0800
Subject: [PATCH 040/212] Don't copy archives to temp files when opening (#326)
---
app/build.gradle.kts | 2 +-
app/proguard-rules.pro | 3 ++
.../java/eu/kanade/tachiyomi/di/AppModule.kt | 3 --
.../tachiyomi/ui/reader/ReaderViewModel.kt | 5 +-
.../ui/reader/loader/ChapterLoader.kt | 10 ++--
.../ui/reader/loader/DownloadPageLoader.kt | 5 +-
.../ui/reader/loader/EpubPageLoader.kt | 6 +--
.../ui/reader/loader/RarPageLoader.kt | 5 +-
.../ui/reader/loader/ZipPageLoader.kt | 11 ++---
core/common/build.gradle.kts | 1 +
.../kanade/tachiyomi/util/storage/EpubFile.kt | 13 +++---
.../core/common/storage/UniFileExtensions.kt | 7 +++
.../common/storage/UniFileTempFileManager.kt | 46 -------------------
gradle/libs.versions.toml | 2 +
source-local/build.gradle.kts | 2 +-
.../tachiyomi/source/local/LocalSource.kt | 19 ++++----
16 files changed, 48 insertions(+), 92 deletions(-)
delete mode 100644 core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileTempFileManager.kt
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 705981b4b..867e8f851 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -208,7 +208,7 @@ dependencies {
// Disk
implementation(libs.disklrucache)
implementation(libs.unifile)
- implementation(libs.junrar)
+ implementation(libs.bundles.archive)
// Preferences
implementation(libs.preferencektx)
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 64220f2b1..c44a8da74 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -72,6 +72,9 @@
# XmlUtil
-keep public enum nl.adaptivity.xmlutil.EventType { *; }
+# Apache Commons Compress
+-keep class * extends org.apache.commons.compress.archivers.zip.ZipExtraField { (); }
+
# Firebase
-keep class com.google.firebase.installations.** { *; }
-keep interface com.google.firebase.installations.** { *; }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt b/app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt
index 9fb7b2fb5..9997a0711 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt
@@ -27,7 +27,6 @@ import nl.adaptivity.xmlutil.XmlDeclMode
import nl.adaptivity.xmlutil.core.XmlVersion
import nl.adaptivity.xmlutil.serialization.XML
import tachiyomi.core.common.storage.AndroidStorageFolderProvider
-import tachiyomi.core.common.storage.UniFileTempFileManager
import tachiyomi.data.AndroidDatabaseHandler
import tachiyomi.data.Database
import tachiyomi.data.DatabaseHandler
@@ -112,8 +111,6 @@ class AppModule(val app: Application) : InjektModule {
ProtoBuf
}
- addSingletonFactory { UniFileTempFileManager(app) }
-
addSingletonFactory { ChapterCache(app, get()) }
addSingletonFactory { CoverCache(app) }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
index c6170f2a9..a59f0500b 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
@@ -55,7 +55,6 @@ import kotlinx.coroutines.flow.update
import kotlinx.coroutines.runBlocking
import logcat.LogPriority
import tachiyomi.core.common.preference.toggle
-import tachiyomi.core.common.storage.UniFileTempFileManager
import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.core.common.util.lang.launchNonCancellable
import tachiyomi.core.common.util.lang.withIOContext
@@ -86,7 +85,6 @@ class ReaderViewModel @JvmOverloads constructor(
private val sourceManager: SourceManager = Injekt.get(),
private val downloadManager: DownloadManager = Injekt.get(),
private val downloadProvider: DownloadProvider = Injekt.get(),
- private val tempFileManager: UniFileTempFileManager = Injekt.get(),
private val imageSaver: ImageSaver = Injekt.get(),
preferences: BasePreferences = Injekt.get(),
val readerPreferences: ReaderPreferences = Injekt.get(),
@@ -271,7 +269,7 @@ class ReaderViewModel @JvmOverloads constructor(
val context = Injekt.get()
val source = sourceManager.getOrStub(manga.source)
- loader = ChapterLoader(context, downloadManager, downloadProvider, tempFileManager, manga, source)
+ loader = ChapterLoader(context, downloadManager, downloadProvider, manga, source)
loadChapter(loader!!, chapterList.first { chapterId == it.chapter.id })
Result.success(true)
@@ -907,7 +905,6 @@ class ReaderViewModel @JvmOverloads constructor(
private fun deletePendingChapters() {
viewModelScope.launchNonCancellable {
downloadManager.deletePendingChapters()
- tempFileManager.deleteTempFiles()
}
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt
index f0edbe7f3..1cd18bceb 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt
@@ -8,7 +8,7 @@ import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import tachiyomi.core.common.i18n.stringResource
-import tachiyomi.core.common.storage.UniFileTempFileManager
+import tachiyomi.core.common.storage.openReadOnlyChannel
import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.manga.model.Manga
@@ -24,7 +24,6 @@ class ChapterLoader(
private val context: Context,
private val downloadManager: DownloadManager,
private val downloadProvider: DownloadProvider,
- private val tempFileManager: UniFileTempFileManager,
private val manga: Manga,
private val source: Source,
) {
@@ -92,18 +91,17 @@ class ChapterLoader(
source,
downloadManager,
downloadProvider,
- tempFileManager,
)
source is LocalSource -> source.getFormat(chapter.chapter).let { format ->
when (format) {
is Format.Directory -> DirectoryPageLoader(format.file)
- is Format.Zip -> ZipPageLoader(tempFileManager.createTempFile(format.file))
+ is Format.Zip -> ZipPageLoader(format.file.openReadOnlyChannel(context))
is Format.Rar -> try {
- RarPageLoader(tempFileManager.createTempFile(format.file))
+ RarPageLoader(format.file.openInputStream())
} catch (e: UnsupportedRarV5Exception) {
error(context.stringResource(MR.strings.loader_rar5_error))
}
- is Format.Epub -> EpubPageLoader(tempFileManager.createTempFile(format.file))
+ is Format.Epub -> EpubPageLoader(format.file.openReadOnlyChannel(context))
}
}
source is HttpSource -> HttpPageLoader(chapter, source)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt
index 1d18d7b47..abef28540 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt
@@ -10,7 +10,7 @@ import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
-import tachiyomi.core.common.storage.UniFileTempFileManager
+import tachiyomi.core.common.storage.openReadOnlyChannel
import tachiyomi.domain.manga.model.Manga
import uy.kohesive.injekt.injectLazy
@@ -23,7 +23,6 @@ internal class DownloadPageLoader(
private val source: Source,
private val downloadManager: DownloadManager,
private val downloadProvider: DownloadProvider,
- private val tempFileManager: UniFileTempFileManager,
) : PageLoader() {
private val context: Application by injectLazy()
@@ -48,7 +47,7 @@ internal class DownloadPageLoader(
}
private suspend fun getPagesFromArchive(file: UniFile): List {
- val loader = ZipPageLoader(tempFileManager.createTempFile(file)).also { zipPageLoader = it }
+ val loader = ZipPageLoader(file.openReadOnlyChannel(context)).also { zipPageLoader = it }
return loader.getPages()
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt
index 324af51bf..baf65324b 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt
@@ -3,14 +3,14 @@ package eu.kanade.tachiyomi.ui.reader.loader
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.util.storage.EpubFile
-import java.io.File
+import java.nio.channels.SeekableByteChannel
/**
* Loader used to load a chapter from a .epub file.
*/
-internal class EpubPageLoader(file: File) : PageLoader() {
+internal class EpubPageLoader(channel: SeekableByteChannel) : PageLoader() {
- private val epub = EpubFile(file)
+ private val epub = EpubFile(channel)
override var isLocal: Boolean = true
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt
index 868ab92b2..b1db3300d 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt
@@ -6,7 +6,6 @@ import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder
import tachiyomi.core.common.util.system.ImageUtil
-import java.io.File
import java.io.InputStream
import java.io.PipedInputStream
import java.io.PipedOutputStream
@@ -15,9 +14,9 @@ import java.util.concurrent.Executors
/**
* Loader used to load a chapter from a .rar or .cbr file.
*/
-internal class RarPageLoader(file: File) : PageLoader() {
+internal class RarPageLoader(inputStream: InputStream) : PageLoader() {
- private val rar = Archive(file)
+ private val rar = Archive(inputStream)
override var isLocal: Boolean = true
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt
index e839d8a55..fadba25c4 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt
@@ -3,22 +3,21 @@ package eu.kanade.tachiyomi.ui.reader.loader
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder
+import org.apache.commons.compress.archivers.zip.ZipFile
import tachiyomi.core.common.util.system.ImageUtil
-import java.io.File
-import java.nio.charset.StandardCharsets
-import java.util.zip.ZipFile
+import java.nio.channels.SeekableByteChannel
/**
* Loader used to load a chapter from a .zip or .cbz file.
*/
-internal class ZipPageLoader(file: File) : PageLoader() {
+internal class ZipPageLoader(channel: SeekableByteChannel) : PageLoader() {
- private val zip = ZipFile(file, StandardCharsets.ISO_8859_1)
+ private val zip = ZipFile(channel)
override var isLocal: Boolean = true
override suspend fun getPages(): List {
- return zip.entries().asSequence()
+ return zip.entries.asSequence()
.filter { !it.isDirectory && ImageUtil.isImage(it.name) { zip.getInputStream(it) } }
.sortedWith { f1, f2 -> f1.name.compareToCaseInsensitiveNaturalOrder(f2.name) }
.mapIndexed { i, entry ->
diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts
index 560e7285f..aaf0f794b 100644
--- a/core/common/build.gradle.kts
+++ b/core/common/build.gradle.kts
@@ -32,6 +32,7 @@ dependencies {
implementation(libs.image.decoder)
implementation(libs.unifile)
+ implementation(libs.bundles.archive)
api(kotlinx.coroutines.core)
api(kotlinx.serialization.json)
diff --git a/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/storage/EpubFile.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/storage/EpubFile.kt
index a00ee69e7..f664c175b 100644
--- a/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/storage/EpubFile.kt
+++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/storage/EpubFile.kt
@@ -1,22 +1,23 @@
package eu.kanade.tachiyomi.util.storage
+import org.apache.commons.compress.archivers.zip.ZipArchiveEntry
+import org.apache.commons.compress.archivers.zip.ZipFile
import org.jsoup.Jsoup
import org.jsoup.nodes.Document
import java.io.Closeable
import java.io.File
import java.io.InputStream
-import java.util.zip.ZipEntry
-import java.util.zip.ZipFile
+import java.nio.channels.SeekableByteChannel
/**
* Wrapper over ZipFile to load files in epub format.
*/
-class EpubFile(file: File) : Closeable {
+class EpubFile(channel: SeekableByteChannel) : Closeable {
/**
* Zip file of this epub.
*/
- private val zip = ZipFile(file)
+ private val zip = ZipFile(channel)
/**
* Path separator used by this epub.
@@ -33,14 +34,14 @@ class EpubFile(file: File) : Closeable {
/**
* Returns an input stream for reading the contents of the specified zip file entry.
*/
- fun getInputStream(entry: ZipEntry): InputStream {
+ fun getInputStream(entry: ZipArchiveEntry): InputStream {
return zip.getInputStream(entry)
}
/**
* Returns the zip file entry for the specified name, or null if not found.
*/
- fun getEntry(name: String): ZipEntry? {
+ fun getEntry(name: String): ZipArchiveEntry? {
return zip.getEntry(name)
}
diff --git a/core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileExtensions.kt b/core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileExtensions.kt
index 8bbd9b3a7..257fe210d 100644
--- a/core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileExtensions.kt
+++ b/core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileExtensions.kt
@@ -1,6 +1,9 @@
package tachiyomi.core.common.storage
+import android.content.Context
+import android.os.ParcelFileDescriptor
import com.hippo.unifile.UniFile
+import java.nio.channels.FileChannel
val UniFile.extension: String?
get() = name?.substringAfterLast('.')
@@ -10,3 +13,7 @@ val UniFile.nameWithoutExtension: String?
val UniFile.displayablePath: String
get() = filePath ?: uri.toString()
+
+fun UniFile.openReadOnlyChannel(context: Context): FileChannel {
+ return ParcelFileDescriptor.AutoCloseInputStream(context.contentResolver.openFileDescriptor(uri, "r")).channel
+}
diff --git a/core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileTempFileManager.kt b/core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileTempFileManager.kt
deleted file mode 100644
index 4ccc5bf43..000000000
--- a/core/common/src/main/kotlin/tachiyomi/core/common/storage/UniFileTempFileManager.kt
+++ /dev/null
@@ -1,46 +0,0 @@
-package tachiyomi.core.common.storage
-
-import android.content.Context
-import android.os.Build
-import android.os.FileUtils
-import com.hippo.unifile.UniFile
-import java.io.BufferedOutputStream
-import java.io.File
-
-class UniFileTempFileManager(
- private val context: Context,
-) {
-
- private val dir = File(context.externalCacheDir, "tmp")
-
- fun createTempFile(file: UniFile): File {
- dir.mkdirs()
-
- val inputStream = context.contentResolver.openInputStream(file.uri)!!
- val tempFile = File.createTempFile(
- file.nameWithoutExtension.orEmpty().padEnd(3), // Prefix must be 3+ chars
- null,
- dir,
- )
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- FileUtils.copy(inputStream, tempFile.outputStream())
- } else {
- BufferedOutputStream(tempFile.outputStream()).use { tmpOut ->
- inputStream.use { input ->
- val buffer = ByteArray(8192)
- var count: Int
- while (input.read(buffer).also { count = it } > 0) {
- tmpOut.write(buffer, 0, count)
- }
- }
- }
- }
-
- return tempFile
- }
-
- fun deleteTempFiles() {
- dir.deleteRecursively()
- }
-}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 576d08176..c6c51a7ab 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -32,6 +32,7 @@ jsoup = "org.jsoup:jsoup:1.17.2"
disklrucache = "com.jakewharton:disklrucache:2.0.2"
unifile = "com.github.tachiyomiorg:unifile:7c257e1c64"
+common-compress = "org.apache.commons:commons-compress:1.25.0"
junrar = "com.github.junrar:junrar:7.5.5"
sqlite-framework = { module = "androidx.sqlite:sqlite-framework", version.ref = "sqlite" }
@@ -100,6 +101,7 @@ detekt-rules-formatting = { module = "io.gitlab.arturbosch.detekt:detekt-formatt
detekt-rules-compose = { module = "io.nlopez.compose.rules:detekt", version.ref = "detektCompose" }
[bundles]
+archive = ["common-compress", "junrar"]
okhttp = ["okhttp-core", "okhttp-logging", "okhttp-brotli", "okhttp-dnsoverhttps"]
js-engine = ["quickjs-android"]
sqlite = ["sqlite-framework", "sqlite-ktx", "sqlite-android"]
diff --git a/source-local/build.gradle.kts b/source-local/build.gradle.kts
index b30b8acd4..46de484ce 100644
--- a/source-local/build.gradle.kts
+++ b/source-local/build.gradle.kts
@@ -12,7 +12,7 @@ kotlin {
api(projects.i18n)
implementation(libs.unifile)
- implementation(libs.junrar)
+ implementation(libs.bundles.archive)
}
}
val androidMain by getting {
diff --git a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
index e33dbbf5f..10aa1e464 100644
--- a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
+++ b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
@@ -18,15 +18,16 @@ import kotlinx.serialization.json.decodeFromStream
import logcat.LogPriority
import nl.adaptivity.xmlutil.AndroidXmlReader
import nl.adaptivity.xmlutil.serialization.XML
+import org.apache.commons.compress.archivers.zip.ZipFile
import tachiyomi.core.common.i18n.stringResource
import tachiyomi.core.metadata.comicinfo.COMIC_INFO_FILE
import tachiyomi.core.metadata.comicinfo.ComicInfo
import tachiyomi.core.metadata.comicinfo.copyFromComicInfo
import tachiyomi.core.metadata.comicinfo.getComicInfo
import tachiyomi.core.metadata.tachiyomi.MangaDetails
-import tachiyomi.core.common.storage.UniFileTempFileManager
import tachiyomi.core.common.storage.extension
import tachiyomi.core.common.storage.nameWithoutExtension
+import tachiyomi.core.common.storage.openReadOnlyChannel
import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.core.common.util.system.ImageUtil
import tachiyomi.core.common.util.system.logcat
@@ -43,7 +44,6 @@ import uy.kohesive.injekt.injectLazy
import java.io.File
import java.io.InputStream
import java.nio.charset.StandardCharsets
-import java.util.zip.ZipFile
import kotlin.time.Duration.Companion.days
import com.github.junrar.Archive as JunrarArchive
import tachiyomi.domain.source.model.Source as DomainSource
@@ -56,7 +56,6 @@ actual class LocalSource(
private val json: Json by injectLazy()
private val xml: XML by injectLazy()
- private val tempFileManager: UniFileTempFileManager by injectLazy()
private val POPULAR_FILTERS = FilterList(OrderBy.Popular(context))
private val LATEST_FILTERS = FilterList(OrderBy.Latest(context))
@@ -214,7 +213,7 @@ actual class LocalSource(
for (chapter in chapterArchives) {
when (Format.valueOf(chapter)) {
is Format.Zip -> {
- ZipFile(tempFileManager.createTempFile(chapter)).use { zip: ZipFile ->
+ ZipFile(chapter.openReadOnlyChannel(context)).use { zip: ZipFile ->
zip.getEntry(COMIC_INFO_FILE)?.let { comicInfoFile ->
zip.getInputStream(comicInfoFile).buffered().use { stream ->
return copyComicInfoFile(stream, folderPath)
@@ -223,7 +222,7 @@ actual class LocalSource(
}
}
is Format.Rar -> {
- JunrarArchive(tempFileManager.createTempFile(chapter)).use { rar ->
+ JunrarArchive(chapter.openInputStream()).use { rar ->
rar.fileHeaders.firstOrNull { it.fileName == COMIC_INFO_FILE }?.let { comicInfoFile ->
rar.getInputStream(comicInfoFile).buffered().use { stream ->
return copyComicInfoFile(stream, folderPath)
@@ -273,7 +272,7 @@ actual class LocalSource(
val format = Format.valueOf(chapterFile)
if (format is Format.Epub) {
- EpubFile(tempFileManager.createTempFile(format.file)).use { epub ->
+ EpubFile(format.file.openReadOnlyChannel(context)).use { epub ->
epub.fillMetadata(manga, this)
}
}
@@ -332,8 +331,8 @@ actual class LocalSource(
entry?.let { coverManager.update(manga, it.openInputStream()) }
}
is Format.Zip -> {
- ZipFile(tempFileManager.createTempFile(format.file)).use { zip ->
- val entry = zip.entries().toList()
+ ZipFile(format.file.openReadOnlyChannel(context)).use { zip ->
+ val entry = zip.entries.toList()
.sortedWith { f1, f2 -> f1.name.compareToCaseInsensitiveNaturalOrder(f2.name) }
.find { !it.isDirectory && ImageUtil.isImage(it.name) { zip.getInputStream(it) } }
@@ -341,7 +340,7 @@ actual class LocalSource(
}
}
is Format.Rar -> {
- JunrarArchive(tempFileManager.createTempFile(format.file)).use { archive ->
+ JunrarArchive(format.file.openInputStream()).use { archive ->
val entry = archive.fileHeaders
.sortedWith { f1, f2 -> f1.fileName.compareToCaseInsensitiveNaturalOrder(f2.fileName) }
.find { !it.isDirectory && ImageUtil.isImage(it.fileName) { archive.getInputStream(it) } }
@@ -350,7 +349,7 @@ actual class LocalSource(
}
}
is Format.Epub -> {
- EpubFile(tempFileManager.createTempFile(format.file)).use { epub ->
+ EpubFile(format.file.openReadOnlyChannel(context)).use { epub ->
val entry = epub.getImagesFromPages()
.firstOrNull()
?.let { epub.getEntry(it) }
From 2ccff8cdde39348538a86e9e88c9e1f134520706 Mon Sep 17 00:00:00 2001
From: FooIbar <118464521+FooIbar@users.noreply.github.com>
Date: Sun, 4 Feb 2024 15:27:46 +0800
Subject: [PATCH 041/212] Fix extracting ComicInfo.xml files in local source
(#325)
---
.../tachiyomi/source/local/LocalSource.kt | 27 +++++++++----------
.../source/local/io/LocalSourceFileSystem.kt | 5 +---
2 files changed, 13 insertions(+), 19 deletions(-)
diff --git a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
index 10aa1e464..b1ae25236 100644
--- a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
+++ b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
@@ -41,7 +41,6 @@ import tachiyomi.source.local.io.Format
import tachiyomi.source.local.io.LocalSourceFileSystem
import tachiyomi.source.local.metadata.fillMetadata
import uy.kohesive.injekt.injectLazy
-import java.io.File
import java.io.InputStream
import java.nio.charset.StandardCharsets
import kotlin.time.Duration.Companion.days
@@ -145,8 +144,8 @@ actual class LocalSource(
// Augment manga details based on metadata files
try {
- val mangaDir by lazy { fileSystem.getMangaDirectory(manga.url) }
- val mangaDirFiles = fileSystem.getFilesInMangaDirectory(manga.url)
+ val mangaDir = fileSystem.getMangaDirectory(manga.url) ?: error("${manga.url} is not a valid directory")
+ val mangaDirFiles = mangaDir.listFiles().orEmpty()
val comicInfoFile = mangaDirFiles
.firstOrNull { it.name == COMIC_INFO_FILE }
@@ -176,7 +175,7 @@ actual class LocalSource(
// Replace with ComicInfo.xml file
val comicInfo = manga.getComicInfo()
mangaDir
- ?.createFile(COMIC_INFO_FILE)
+ .createFile(COMIC_INFO_FILE)
?.openOutputStream()
?.use {
val comicInfoString = xml.encodeToString(ComicInfo.serializer(), comicInfo)
@@ -191,14 +190,12 @@ actual class LocalSource(
.filter(Archive::isSupported)
.toList()
- val folderPath = mangaDir?.filePath
-
- val copiedFile = copyComicInfoFileFromArchive(chapterArchives, folderPath)
+ val copiedFile = copyComicInfoFileFromArchive(chapterArchives, mangaDir)
if (copiedFile != null) {
- setMangaDetailsFromComicInfoFile(copiedFile.inputStream(), manga)
+ setMangaDetailsFromComicInfoFile(copiedFile.openInputStream(), manga)
} else {
// Avoid re-scanning
- mangaDir?.createFile(".noxml")
+ mangaDir.createFile(".noxml")
}
}
}
@@ -209,14 +206,14 @@ actual class LocalSource(
return@withIOContext manga
}
- private fun copyComicInfoFileFromArchive(chapterArchives: List, folderPath: String?): File? {
+ private fun copyComicInfoFileFromArchive(chapterArchives: List, folder: UniFile): UniFile? {
for (chapter in chapterArchives) {
when (Format.valueOf(chapter)) {
is Format.Zip -> {
ZipFile(chapter.openReadOnlyChannel(context)).use { zip: ZipFile ->
zip.getEntry(COMIC_INFO_FILE)?.let { comicInfoFile ->
zip.getInputStream(comicInfoFile).buffered().use { stream ->
- return copyComicInfoFile(stream, folderPath)
+ return copyComicInfoFile(stream, folder)
}
}
}
@@ -225,7 +222,7 @@ actual class LocalSource(
JunrarArchive(chapter.openInputStream()).use { rar ->
rar.fileHeaders.firstOrNull { it.fileName == COMIC_INFO_FILE }?.let { comicInfoFile ->
rar.getInputStream(comicInfoFile).buffered().use { stream ->
- return copyComicInfoFile(stream, folderPath)
+ return copyComicInfoFile(stream, folder)
}
}
}
@@ -236,9 +233,9 @@ actual class LocalSource(
return null
}
- private fun copyComicInfoFile(comicInfoFileStream: InputStream, folderPath: String?): File {
- return File("$folderPath/$COMIC_INFO_FILE").apply {
- outputStream().use { outputStream ->
+ private fun copyComicInfoFile(comicInfoFileStream: InputStream, folder: UniFile): UniFile? {
+ return folder.createFile(COMIC_INFO_FILE)?.apply {
+ openOutputStream().use { outputStream ->
comicInfoFileStream.use { it.copyTo(outputStream) }
}
}
diff --git a/source-local/src/androidMain/kotlin/tachiyomi/source/local/io/LocalSourceFileSystem.kt b/source-local/src/androidMain/kotlin/tachiyomi/source/local/io/LocalSourceFileSystem.kt
index ad95b39ce..402df7e00 100644
--- a/source-local/src/androidMain/kotlin/tachiyomi/source/local/io/LocalSourceFileSystem.kt
+++ b/source-local/src/androidMain/kotlin/tachiyomi/source/local/io/LocalSourceFileSystem.kt
@@ -22,9 +22,6 @@ actual class LocalSourceFileSystem(
}
actual fun getFilesInMangaDirectory(name: String): List {
- return getBaseDirectory()
- ?.findFile(name, true)
- ?.takeIf { it.isDirectory }
- ?.listFiles().orEmpty().toList()
+ return getMangaDirectory(name)?.listFiles().orEmpty().toList()
}
}
From 9bff20cb1a0918d7789b281952624fed890fbab7 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 4 Feb 2024 13:31:52 +0600
Subject: [PATCH 042/212] Update dependency gradle to v8.6 (#341)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
gradle/wrapper/gradle-wrapper.properties | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 1af9e0930..a80b22ce5 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
From 78271a54a4899765a77c10a4e51b79beab8ee830 Mon Sep 17 00:00:00 2001
From: Soitora
Date: Tue, 6 Feb 2024 22:18:04 +0100
Subject: [PATCH 043/212] [skip ci] Add Dependencies label to Renovate
Dependencies (#354)
---
.github/renovate.json5 | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/renovate.json5 b/.github/renovate.json5
index d333b80a6..669bc1e28 100644
--- a/.github/renovate.json5
+++ b/.github/renovate.json5
@@ -4,6 +4,7 @@
"config:base"
],
"schedule": ["every sunday"],
+ "labels": ["Dependencies"],
"packageRules": [
{
// Compiler plugins are tightly coupled to Kotlin version
From d5d7065e75ead7e1ca9d3404e91990f1684c83ff Mon Sep 17 00:00:00 2001
From: Soitora
Date: Wed, 7 Feb 2024 08:54:37 +0100
Subject: [PATCH 044/212] [skip ci] Tweak README.md (#353)
* Center README license
* Clean up the drop-downs
* Change copyright modification location
* Add Bitmap repo
---
README.md | 41 +++++++----------------------------------
1 file changed, 7 insertions(+), 34 deletions(-)
diff --git a/README.md b/README.md
index e0a09a692..b059b312c 100644
--- a/README.md
+++ b/README.md
@@ -44,40 +44,13 @@ Discover and read manga, webtoons, comics, and more – easier than ever on your
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
-If you got any questions, [join our Discord server](https://discord.gg/mihon).
+Before reporting a new issue, take a look at the [FAQ](https://mihon.app/docs/faq/general), the [changelog](https://mihon.app/changelogs/) and the already opened [issues](https://github.com/mihonapp/mihon/issues); if you got any questions, join our [Discord server](https://discord.gg/mihon).
-Issues
-
-Before reporting a new issue, take a look at the [FAQ](https://mihon.app/docs/faq/general), the [changelog](https://mihon.app/changelogs/) and the already opened [issues](https://github.com/mihonapp/mihon/issues).
-
-
-
-Bugs
-
-* Include version (**More → About → Version**).
-* If not latest, try updating, it may have already been solved.
-* Beta version is equal to the number of commits as seen on the main page.
-* Include steps to reproduce (if not obvious from description).
-* Include screenshot (if needed).
-* If it could be device-dependent, try reproducing on another device (if possible).
-* Don't group unrelated requests into one issue
-- **DO:** [#24](https://git.mihon.dev/tachiyomi/tachiyomi/issues/24), [#71](https://git.mihon.dev/tachiyomi/tachiyomi/issues/71)
-- **DON'T:** [#75](https://git.mihon.dev/tachiyomi/tachiyomi/issues/75)
-
-
-
-Feature requests
-
-* Write a detailed issue, explaining what it should do or how.
- * Avoid writing just "like X app does";
-* Include screenshot (if needed)
-* Source requests are not accepted.
-
-
### Repositories
[![mihonapp/website - GitHub](https://github-readme-stats.vercel.app/api/pin/?username=mihonapp&repo=website&bg_color=161B22&text_color=c9d1d9&title_color=0877d2&icon_color=0877d2&border_radius=8&hide_border=true)](https://github.com/mihonapp/website/)
+[![mihonapp/bitmap.kt - GitHub](https://github-readme-stats.vercel.app/api/pin/?username=mihonapp&repo=bitmap.kt&bg_color=161B22&text_color=c9d1d9&title_color=0877d2&icon_color=0877d2&border_radius=8&hide_border=true)](https://github.com/mihonapp/bitmap.kt/)
### Credits
@@ -93,8 +66,10 @@ The developer(s) of this application does not have any affiliation with the cont
### License
-```
+
Copyright © 2015 Javier Tomás
+Copyright © 2024 The Mihon Open Source Project
+
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
@@ -106,8 +81,6 @@ distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+
-Modifications Copyright © 2024 The Mihon Open Source Project
-```
-
-