Skip to content

Instantly share code, notes, and snippets.

@moonmile
Created September 14, 2020 16:06
Show Gist options
  • Save moonmile/bff5a25af533f937af702b173530bde0 to your computer and use it in GitHub Desktop.
Save moonmile/bff5a25af533f937af702b173530bde0 to your computer and use it in GitHub Desktop.
UserDataModel::ExposureInformation コレクションへの追加(iOS版)
```mermaid
sequenceDiagram
PlatformScheduleFetch ->> ExposureNotification(share): UpdateKeysFromServer
ExposureNotification(share) ->> ExposureNotificationHandler: FetchExposureKeyBatchFilesFromServerAsync(submitBatches)
ExposureNotificationHandler ->> ExposureNotificationHandler: DownloadBatchAsync
ExposureNotificationHandler -->> ExposureNotificationHandler: downloadedFiles
ExposureNotificationHandler ->> ExposureNotificationHandler: downloadedFiles.Count > 0
ExposureNotificationHandler ->> ExposureNotification(share): submitBatches: callback
ExposureNotification(share) ->> ExposureNotification(ios): PlatformDetectExposuresAsync(downloadedFiles)
ExposureNotification(ios) ->> ENManager: DetectExposuresAsync
ENManager -->> ExposureNotification(ios): summary
ExposureNotification(ios) -->> ExposureNotification(share): return summary, info
ExposureNotification(share) ->> ExposureNotification(share): summary?.MatchedKeyCount > 0
ExposureNotification(share) ->> ExposureNotificationHandler: ExposureDetectedAsync(summay, info)
ExposureNotificationHandler ->> UserDataModel: ExposureSummary = summary
UserDataModel -->> ExposureNotificationHandler:
ExposureNotificationHandler ->> ExposureNotification(ios): info(): callback
ExposureNotification(ios) ->> ExposureNotification(ios): if summary?.MatchedKeyCount > 0 then
ExposureNotification(ios) ->> ENManager: GetExposureInfoAsync(detectionSummary...)
ENManager -->> ExposureNotification(ios): exposures
loop exposures
ExposureNotification(ios) ->> ExposureNotification(ios): info.add(new ExposureInfo())
end
ExposureNotification(ios) -->> ExposureNotificationHandler: return info
ExposureNotificationHandler ->> ExposureNotificationHandler: exposureInfo <- info()
loop add
ExposureNotificationHandler ->> UserDataModel: ExposureInformation.add( exposure )
end
UserDataModel ->> UserDataModel: Save
ExposureNotificationHandler -->> ExposureNotification(share): return ExposureDetectedAsync
ExposureNotification(share) -->> ExposureNotificationHandler: return submitBatches
ExposureNotificationHandler ->> ExposureNotificationHandler: delete files
ExposureNotificationHandler -->> ExposureNotification(share): return FetchExposureKeyBatchFilesFromServerAsync
ExposureNotification(share) -->> PlatformScheduleFetch: processedAnyFiles
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment