mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Update widget
This commit is contained in:
parent
1cbe7cdd29
commit
ba2d454924
@ -793,7 +793,7 @@ class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessag
|
|||||||
if let searchTerm = searchTerm {
|
if let searchTerm = searchTerm {
|
||||||
if !searchTerm.isEmpty {
|
if !searchTerm.isEmpty {
|
||||||
for renderedPeer in transaction.searchPeers(query: searchTerm) {
|
for renderedPeer in transaction.searchPeers(query: searchTerm) {
|
||||||
if let peer = renderedPeer.peer, !(peer is TelegramSecretChat) {
|
if let peer = renderedPeer.peer, !(peer is TelegramSecretChat), !peer.isDeleted {
|
||||||
peers.append(peer)
|
peers.append(peer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -804,7 +804,7 @@ class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessag
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for renderedPeer in transaction.getTopChatListEntries(groupId: .root, count: 50) {
|
for renderedPeer in transaction.getTopChatListEntries(groupId: .root, count: 50) {
|
||||||
if let peer = renderedPeer.peer, !(peer is TelegramSecretChat) {
|
if let peer = renderedPeer.peer, !(peer is TelegramSecretChat), !peer.isDeleted {
|
||||||
peers.append(peer)
|
peers.append(peer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -369,12 +369,12 @@ struct WidgetView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func linkForPeer(id: Int64) -> String {
|
private func linkForPeer(accountId: Int64, id: Int64) -> String {
|
||||||
switch self.widgetFamily {
|
switch self.widgetFamily {
|
||||||
case .systemSmall:
|
case .systemSmall:
|
||||||
return "\(buildConfig.appSpecificUrlScheme)://"
|
return "\(buildConfig.appSpecificUrlScheme)://"
|
||||||
default:
|
default:
|
||||||
return "\(buildConfig.appSpecificUrlScheme)://localpeer?id=\(id)"
|
return "\(buildConfig.appSpecificUrlScheme)://localpeer?id=\(id)&accountId=\(accountId)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,7 +427,7 @@ struct WidgetView: View {
|
|||||||
|
|
||||||
return ZStack {
|
return ZStack {
|
||||||
ForEach(0 ..< min(peers.peers.count, columnCount * rowCount), content: { i in
|
ForEach(0 ..< min(peers.peers.count, columnCount * rowCount), content: { i in
|
||||||
Link(destination: URL(string: linkForPeer(id: peers.peers[i].peer.id))!, label: {
|
Link(destination: URL(string: linkForPeer(accountId: peers.peers[i].accountId, id: peers.peers[i].peer.id))!, label: {
|
||||||
AvatarItemView(
|
AvatarItemView(
|
||||||
peer: peers.peers[i],
|
peer: peers.peers[i],
|
||||||
itemSize: itemSize
|
itemSize: itemSize
|
||||||
@ -507,13 +507,29 @@ struct WidgetView: View {
|
|||||||
case .text:
|
case .text:
|
||||||
break
|
break
|
||||||
case .image:
|
case .image:
|
||||||
|
if !message.text.isEmpty {
|
||||||
|
text = "🖼 \(message.text)"
|
||||||
|
} else {
|
||||||
text = "🖼 Photo"
|
text = "🖼 Photo"
|
||||||
|
}
|
||||||
case .video:
|
case .video:
|
||||||
|
if !message.text.isEmpty {
|
||||||
|
text = "📹 \(message.text)"
|
||||||
|
} else {
|
||||||
text = "📹 Video"
|
text = "📹 Video"
|
||||||
|
}
|
||||||
case .gif:
|
case .gif:
|
||||||
|
if !message.text.isEmpty {
|
||||||
|
text = "\(message.text)"
|
||||||
|
} else {
|
||||||
text = "Gif"
|
text = "Gif"
|
||||||
|
}
|
||||||
case let .file(file):
|
case let .file(file):
|
||||||
|
if !message.text.isEmpty {
|
||||||
|
text = "📹 \(message.text)"
|
||||||
|
} else {
|
||||||
text = "📎 \(file.name)"
|
text = "📎 \(file.name)"
|
||||||
|
}
|
||||||
case let .music(music):
|
case let .music(music):
|
||||||
if !music.title.isEmpty && !music.artist.isEmpty {
|
if !music.title.isEmpty && !music.artist.isEmpty {
|
||||||
text = "\(music.artist) — \(music.title)"
|
text = "\(music.artist) — \(music.title)"
|
||||||
@ -611,9 +627,11 @@ struct WidgetView: View {
|
|||||||
|
|
||||||
func chatContentView(_ index: Int, size: CGSize) -> AnyView {
|
func chatContentView(_ index: Int, size: CGSize) -> AnyView {
|
||||||
let peers: ParsedPeers?
|
let peers: ParsedPeers?
|
||||||
|
var isPlaceholder = false
|
||||||
switch data {
|
switch data {
|
||||||
case let .peers(peersValue):
|
case let .peers(peersValue):
|
||||||
if peersValue.peers.count <= index {
|
if peersValue.peers.count <= index {
|
||||||
|
isPlaceholder = peersValue.peers.count != 0
|
||||||
peers = nil
|
peers = nil
|
||||||
} else {
|
} else {
|
||||||
peers = peersValue
|
peers = peersValue
|
||||||
@ -624,9 +642,15 @@ struct WidgetView: View {
|
|||||||
|
|
||||||
let itemHeight = (size.height - 22.0) / 2.0
|
let itemHeight = (size.height - 22.0) / 2.0
|
||||||
|
|
||||||
|
if isPlaceholder {
|
||||||
|
return AnyView(Spacer()
|
||||||
|
.frame(width: size.width, height: itemHeight, alignment: .leading)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
let url: URL
|
let url: URL
|
||||||
if let peers = peers {
|
if let peers = peers {
|
||||||
url = URL(string: linkForPeer(id: peers.peers[index].peer.id))!
|
url = URL(string: linkForPeer(accountId: peers.peers[index].accountId, id: peers.peers[index].peer.id))!
|
||||||
} else {
|
} else {
|
||||||
url = URL(string: "\(buildConfig.appSpecificUrlScheme)://")!
|
url = URL(string: "\(buildConfig.appSpecificUrlScheme)://")!
|
||||||
}
|
}
|
||||||
|
@ -236,18 +236,21 @@ func openExternalUrlImpl(context: AccountContext, urlContext: OpenURLContext, ur
|
|||||||
if parsedUrl.host == "localpeer" {
|
if parsedUrl.host == "localpeer" {
|
||||||
if let components = URLComponents(string: "/?" + query) {
|
if let components = URLComponents(string: "/?" + query) {
|
||||||
var peerId: PeerId?
|
var peerId: PeerId?
|
||||||
|
var accountId: Int64?
|
||||||
if let queryItems = components.queryItems {
|
if let queryItems = components.queryItems {
|
||||||
for queryItem in queryItems {
|
for queryItem in queryItems {
|
||||||
if let value = queryItem.value {
|
if let value = queryItem.value {
|
||||||
if queryItem.name == "id", let intValue = Int64(value) {
|
if queryItem.name == "id", let intValue = Int64(value) {
|
||||||
peerId = PeerId(intValue)
|
peerId = PeerId(intValue)
|
||||||
|
} else if queryItem.name == "accountId", let intValue = Int64(value) {
|
||||||
|
accountId = intValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let peerId = peerId, let navigationController = navigationController {
|
if let peerId = peerId, let accountId = accountId {
|
||||||
context.sharedContext.applicationBindings.dismissNativeController()
|
context.sharedContext.applicationBindings.dismissNativeController()
|
||||||
context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId)))
|
context.sharedContext.navigateToChat(accountId: AccountRecordId(rawValue: accountId), peerId: peerId, messageId: nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if parsedUrl.host == "join" {
|
} else if parsedUrl.host == "join" {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user