summaryrefslogtreecommitdiff
path: root/DomainDig/ExportPresenter.swift
blob: 82ec7ae1974f830661f34f42931b0bea4fc4c353 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import SwiftUI
import UIKit

enum ExportPresenter {
    static func share(filename: String, contents: String) {
        let url = FileManager.default.temporaryDirectory.appendingPathComponent(filename)

        do {
            try contents.write(to: url, atomically: true, encoding: .utf8)
        } catch {
            return
        }

        let activityController = UIActivityViewController(activityItems: [url], applicationActivities: nil)
        guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
              let rootViewController = windowScene.keyWindow?.rootViewController else {
            return
        }

        var presenter = rootViewController
        while let presentedViewController = presenter.presentedViewController {
            presenter = presentedViewController
        }

        activityController.popoverPresentationController?.sourceView = presenter.view
        presenter.present(activityController, animated: true)
    }
}