api update

This commit is contained in:
Mikhail Filimonov
2024-06-06 12:54:30 +04:00
parent 8e03efc9b0
commit d5ce6e2129
5 changed files with 47 additions and 14 deletions

View File

@@ -50,7 +50,7 @@ func _internal_clearCloudDraftsInteractively(postbox: Postbox, network: Network,
innerFlags |= 1 << 0
replyTo = .inputReplyToMessage(flags: innerFlags, replyToMsgId: 0, topMsgId: topMsgId, replyToPeerId: nil, quoteText: nil, quoteEntities: nil, quoteOffset: nil)
}
signals.append(network.request(Api.functions.messages.saveDraft(flags: flags, replyTo: replyTo, peer: inputPeer, message: "", entities: nil, media: nil))
signals.append(network.request(Api.functions.messages.saveDraft(flags: flags, replyTo: replyTo, peer: inputPeer, message: "", entities: nil, media: nil, effect: nil))
|> `catch` { _ -> Signal<Api.Bool, NoError> in
return .single(.boolFalse)
}

View File

@@ -125,7 +125,7 @@ public enum MediaArea: Codable, Equatable {
case venue(coordinates: Coordinates, venue: Venue)
case reaction(coordinates: Coordinates, reaction: MessageReaction.Reaction, flags: ReactionFlags)
case channelMessage(coordinates: Coordinates, messageId: EngineMessage.Id)
case url(coordinates: Coordinates, url: String)
public struct ReactionFlags: OptionSet {
public var rawValue: Int32
@@ -146,6 +146,7 @@ public enum MediaArea: Codable, Equatable {
case venue
case reaction
case channelMessage
case url
}
public enum DecodingError: Error {
@@ -172,6 +173,10 @@ public enum MediaArea: Codable, Equatable {
let coordinates = try container.decode(MediaArea.Coordinates.self, forKey: .coordinates)
let messageId = try container.decode(MessageId.self, forKey: .value)
self = .channelMessage(coordinates: coordinates, messageId: messageId)
case .url:
let coordinates = try container.decode(MediaArea.Coordinates.self, forKey: .coordinates)
let url = try container.decode(String.self, forKey: .value)
self = .url(coordinates: coordinates, url: url)
}
}
@@ -192,6 +197,10 @@ public enum MediaArea: Codable, Equatable {
try container.encode(MediaAreaType.channelMessage.rawValue, forKey: .type)
try container.encode(coordinates, forKey: .coordinates)
try container.encode(messageId, forKey: .value)
case let .url(coordinates, url):
try container.encode(MediaAreaType.url.rawValue, forKey: .type)
try container.encode(coordinates, forKey: .coordinates)
try container.encode(url, forKey: .value)
}
}
}
@@ -205,6 +214,8 @@ public extension MediaArea {
return coordinates
case let .channelMessage(coordinates, _):
return coordinates
case let .url(coordinates, _):
return coordinates
}
}
}

View File

@@ -1260,10 +1260,16 @@ public final class PeerStoryListContext: StoryListContext {
}
public final class SearchStoryListContext: StoryListContext {
public enum Source {
case hashtag(String)
case venue(provider: String, id: String)
}
private final class Impl {
private let queue: Queue
private let account: Account
private let query: String
private let source: Source
private let statePromise = Promise<State>()
private var stateValue: State {
@@ -1282,10 +1288,10 @@ public final class SearchStoryListContext: StoryListContext {
private var completionCallbacksByToken: [AnyHashable: [() -> Void]] = [:]
init(queue: Queue, account: Account, query: String) {
init(queue: Queue, account: Account, source: Source) {
self.queue = queue
self.account = account
self.query = query
self.source = source
self.stateValue = State(peerReference: nil, items: [], pinnedIds: Set(), totalCount: 0, loadMoreToken: AnyHashable(""), isCached: false, hasCache: false, allEntityFiles: [:])
self.statePromise.set(.single(self.stateValue))
@@ -1320,14 +1326,26 @@ public final class SearchStoryListContext: StoryListContext {
let account = self.account
let accountPeerId = account.peerId
let searchHashtag: String
if self.query.hasPrefix("#") {
searchHashtag = String(self.query[self.query.index(after: self.query.startIndex)...])
} else {
searchHashtag = self.query
var searchHashtag: String? = nil
var venueProvider: String? = nil
var venueId: String? = nil
var flags: Int32 = 0
switch source {
case let .hashtag(query):
if query.hasPrefix("#") {
searchHashtag = String(query[query.index(after: query.startIndex)...])
} else {
searchHashtag = query
}
flags |= (1 << 0)
case .venue(let provider, let id):
venueProvider = provider
venueId = id
flags |= (1 << 1)
}
self.requestDisposable = (account.network.request(Api.functions.stories.searchPosts(hashtag: searchHashtag, offset: "", limit: Int32(limit)))
self.requestDisposable = (account.network.request(Api.functions.stories.searchPosts(flags: flags, hashtag: searchHashtag, venueProvider: venueProvider, venueId: venueId, offset: "", limit: Int32(limit)))
|> map { result -> Api.stories.FoundStories? in
return result
}
@@ -1455,11 +1473,11 @@ public final class SearchStoryListContext: StoryListContext {
private let queue: Queue
private let impl: QueueLocalObject<Impl>
public init(account: Account, query: String) {
public init(account: Account, source: Source) {
let queue = Queue.mainQueue()
self.queue = queue
self.impl = QueueLocalObject(queue: queue, generate: {
return Impl(queue: queue, account: account, query: query)
return Impl(queue: queue, account: account, source: source)
})
}