@@ -25,8 +25,9 @@ import Control.Concurrent (forkIO)
2525import Control.Concurrent.Async (async , wait )
2626import Control.Monad (forever , void , when , (>=>) )
2727import Control.Monad.Catch (Exception , MonadCatch (catch ), MonadThrow (.. ), SomeException , handle )
28+ import Control.Monad.Extra (fromMaybeM )
2829import Control.Monad.IO.Class (MonadIO (.. ))
29- import Control.Monad.Reader (MonadReader (ask , local ), ReaderT (.. ))
30+ import Control.Monad.Reader (MonadReader (ask , local ), ReaderT (.. ), asks )
3031import Data.ByteString (ByteString )
3132import Data.FileEmbed (embedFileIfExists )
3233import Data.Fixed (Pico )
@@ -44,7 +45,7 @@ import qualified Data.Time as Time
4445import Encoins.Relay.Apps.Delegation.Internal (DelegConfig (.. ), Delegation (.. ), DelegationEnv (.. ), DelegationM (.. ),
4546 Progress (.. ), delegAddress , getBalances , getIpsWithBalances ,
4647 loadPastProgress , runDelegationM , updateProgress , writeResultFile )
47- import Encoins.Relay.Apps.Internal (formatTime , janitorFiles )
48+ import Encoins.Relay.Apps.Internal (formatTime , janitorFiles , loadMostRecentFile )
4849import qualified Network.Wai.Handler.Warp as Warp
4950import qualified Network.Wai.Handler.WarpTLS as Warp
5051import PlutusAppsExtra.Utils.Address (addressToBech32 )
@@ -144,7 +145,7 @@ getServersHandler :: DelegationM (Map Text Integer)
144145getServersHandler = delegationErrorH $ do
145146 Progress _ delegs <- getMostRecentProgressFile
146147 (retiredRelays :: [Text ]) <- liftIO $ decodeOrErrorFromFile " retiredRelays.json"
147- filterWithKey (\ k _ -> k `notElem` retiredRelays) <$> getIpsWithBalances delegs
148+ filterWithKey (\ k _ -> k `notElem` retiredRelays) <$> getResult delegs
148149
149150-------------------------------------- Get current (more than 100k(MinTokenNumber) delegated tokens) servers endpoint --------------------------------------
150151
@@ -154,7 +155,7 @@ getCurrentServersHandler :: DelegationM [Text]
154155getCurrentServersHandler = delegationErrorH $ do
155156 env <- ask
156157 Progress _ delegs <- getMostRecentProgressFile
157- ipsWithBalances <- getIpsWithBalances delegs
158+ ipsWithBalances <- getResult delegs
158159 -- We are currently using proxies for each server. DelegationMap is a map of server IPs to their proxy IPs.
159160 delegationMap <- liftIO $ decodeOrErrorFromFile " delegationMap.json"
160161
@@ -223,6 +224,11 @@ getMostRecentProgressFile = do
223224 when (diff > fromIntegral dEnvMaxDelay) $ throwM $ StaleProgressFile diff (diff - fromIntegral dEnvMaxDelay)
224225 pure p
225226
227+ getResult :: [Delegation ] -> DelegationM (Map Text Integer )
228+ getResult delegs = do
229+ delegFolder <- asks dEnvDelegationFolder
230+ fromMaybeM (getIpsWithBalances delegs) $ liftIO (fmap snd <$> loadMostRecentFile delegFolder " result_" )
231+
226232searchForDelegations :: DelegationM ()
227233searchForDelegations = do
228234 DelegationEnv {.. } <- ask
0 commit comments