checkRemoteChange' :: Manager -> AccessToken -> ResourceT IO Bool
checkRemoteChange' manager token = do
    (_, _, previousState, _) <- liftIO initLocalState
    (root, _, mbox) <- getAccount manager token
    remoteState <- runReaderT getRemoteState (manager, token, DP.csrfToken root, mbox)
    let remoteFiles = getFileSetFromMap remoteState
    let previousRemoteFiles = remoteSyncState previousState
    let remoteChanges = computeChanges remoteFiles previousRemoteFiles
    unless (null remoteChanges) (liftIO $ infoM "Sync.checkRemoteChange" ("remoteChanges:\n" ++ formatList remoteChanges))
    return $ not (null remoteChanges)
checkRemoteChange' :: Manager -> AccessToken -> ResourceT IO Bool
checkRemoteChange' manager token = do
    (_, _, previousState, _) <- liftIO initLocalState
    (root, _, mbox) <- getAccount manager token
    remoteState <- runReaderT getRemoteState (manager, token, DP.csrfToken root, mbox)
    let remoteFiles = getFileSetFromMap remoteState
    let previousRemoteFiles = remoteSyncState previousState
    let remoteChanges = computeChanges remoteFiles previousRemoteFiles
    unless (null remoteChanges) (liftIO $ infoM "Sync.checkRemoteChange" ("remoteChanges:\n" ++ formatList remoteChanges))
    return $ not (null remoteChanges)
checkRemoteChange' manager token = do
    (_, _, previousState, _) <- liftIO initLocalState
    (root, _, mbox) <- getAccount manager token
    remoteState <- runReaderT getRemoteState (manager, token, DP.csrfToken root, mbox)
    let remoteFiles = getFileSetFromMap remoteState
    let previousRemoteFiles = remoteSyncState previousState
    let remoteChanges = computeChanges remoteFiles previousRemoteFiles
    unless (null remoteChanges) (liftIO $ infoM "Sync.checkRemoteChange" ("remoteChanges:\n" ++ formatList remoteChanges))
    return $ not (null remoteChanges)