Files
AFFiNE-Mirror/packages/frontend/apps/ios/App/Shared/ShareInbox/ShareInboxModels.swift
T
DarkSky b6de0ad51b feat(ios): improve share preview (#15538)
#### PR Dependency Tree

* **PR #15538** 👈

This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added rich link previews to mobile and iOS sharing, including images,
metadata, transcripts, and selected text.
* Share imports can now create structured content blocks, embeds,
bookmarks, and transcript callouts.
* Added workspace-aware preview handling for cloud, self-hosted, and
signed-out modes.
* **Accessibility**
* Improved collapse/expand controls with semantic buttons and ARIA
relationships.
* **Bug Fixes**
  * Enhanced URL and error sanitization in server logs.
* Improved link-preview CORS support, validation, and request handling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-28 03:32:26 +08:00

86 lines
1.9 KiB
Swift

import Foundation
struct ShareInboxAttachment: Codable, Equatable {
var fileName: String
var mimeType: String
var relativePath: String
}
enum ShareInboxContentKind: String, Codable {
case url
case text
case image
}
struct ShareInboxContent: Codable, Equatable {
var kind: ShareInboxContentKind
var url: String?
var text: String?
}
struct ShareInboxTarget: Codable, Equatable {
var workspaceId: String
var workspaceFlavour: String
var tagIds: [String]
var collectionId: String?
}
struct ShareInboxResult: Codable, Equatable {
var docId: String
var committedAt: Date
}
struct ShareInboxItem: Codable, Equatable, Identifiable {
var id: String
var documentId: String
var createdAt: Date
var title: String
var content: ShareInboxContent
var previewRoute: SharePreviewRoute?
var target: ShareInboxTarget?
var previewText: String?
var attachments: [ShareInboxAttachment]
var result: ShareInboxResult?
var lastError: String?
init(
id: String = UUID().uuidString,
documentId: String = UUID().uuidString,
createdAt: Date = Date(),
title: String,
content: ShareInboxContent,
previewRoute: SharePreviewRoute? = nil,
target: ShareInboxTarget? = nil,
previewText: String? = nil,
attachments: [ShareInboxAttachment] = [],
result: ShareInboxResult? = nil,
lastError: String? = nil
) {
self.id = id
self.documentId = documentId
self.createdAt = createdAt
self.title = title
self.content = content
self.previewRoute = previewRoute
self.target = target
self.previewText = previewText
self.attachments = attachments
self.result = result
self.lastError = lastError
}
}
struct SharePayloadFile: Equatable {
var data: Data
var mimeType: String
var fileName: String
}
struct SharePayloadDraft: Equatable {
var title: String
var content: ShareInboxContent?
var previewText: String
var file: SharePayloadFile?
var errorMessage: String?
}