package Ġcom . example . feature . photo . gallery . impl . domain Ċ Ċ import Ġcom . example . core . s ream s . on Io Ċ import Ġcom . example . domain . Single UseCase Ċ import Ġcom . example . feature . photo . gallery . impl . domain . Calculate Grid Params UseCase . Params Ċ import Ġcom . example . feature . photo . gallery . impl . domain . Calculate Grid Params UseCase . Result Ċ import Ġio . reactivex . rx java 3 . core . Single Ċ import Ġjavax . inject . Inject Ċ Ċ internal Ġclass ĠCalculate Grid Params UseCase Ġ@ Inject Ġconstructor (): ĠSingle UseCase < Params , ĠResult > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( params : ĠParams ): ĠSingle < Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . from Callable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġparams . default Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( result Ġ>= Ġ 0 Ġ&& Ġparams . width Ġ% Ġresult Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Count Ġ= Ġparams . width Ġ/ Ġresult , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Size Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. on Io () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠParams ( ĊĠĠĠĠĠĠĠ Ġval Ġwidth : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġdefault Size : ĠInt ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠResult ( ĊĠĠĠĠĠĠĠ Ġval Ġspan Count : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġitem Size : ĠInt ĊĠĠĠ Ġ) Ċ }