fix: change gateway and remove old code to decode the hash
Fixes: - https://github.com/status-im/status-desktop/issues/6964 Depends on: - https://github.com/status-im/status-go/pull/2795 - https://github.com/status-im/status-jenkins-lib/pull/44 Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
parent
b657d0aede
commit
7544bd6fb5
|
@ -1,4 +1,4 @@
|
|||
library 'status-jenkins-lib@v1.3.4'
|
||||
library 'status-jenkins-lib@v1.5.1'
|
||||
|
||||
pipeline {
|
||||
agent { label 'linux' }
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
library 'status-jenkins-lib@v1.3.4'
|
||||
library 'status-jenkins-lib@v1.5.1'
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
library 'status-jenkins-lib@v1.3.4'
|
||||
library 'status-jenkins-lib@v1.5.1'
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
library 'status-jenkins-lib@v1.3.4'
|
||||
library 'status-jenkins-lib@v1.5.1'
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
library 'status-jenkins-lib@v1.3.4'
|
||||
library 'status-jenkins-lib@v1.5.1'
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
library 'status-jenkins-lib@v1.3.4'
|
||||
library 'status-jenkins-lib@v1.5.1'
|
||||
|
||||
pipeline {
|
||||
agent { label 'linux' }
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
library 'status-jenkins-lib@v1.3.4'
|
||||
library 'status-jenkins-lib@v1.5.1'
|
||||
|
||||
pipeline {
|
||||
agent { label 'windows' }
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
library 'status-jenkins-lib@v1.3.4'
|
||||
library 'status-jenkins-lib@v1.5.1'
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
|
|
|
@ -102,9 +102,6 @@ proc dismissActivityCenterNotifications*(self: Controller, notificationIds: seq[
|
|||
proc getRenderedText*(self: Controller, parsedTextArray: seq[ParsedText]): string =
|
||||
return self.messageService.getRenderedText(parsedTextArray)
|
||||
|
||||
proc decodeContentHash*(self: Controller, hash: string): string =
|
||||
return eth_utils.decodeContentHash(hash)
|
||||
|
||||
proc switchTo*(self: Controller, sectionId, chatId, messageId: string) =
|
||||
let data = ActiveSectionChatArgs(sectionId: sectionId, chatId: chatId, messageId: messageId)
|
||||
self.events.emit(SIGNAL_MAKE_SECTION_CHAT_ACTIVE, data)
|
||||
|
|
|
@ -88,7 +88,7 @@ proc createMessageItemFromDto(self: Module, message: MessageDto, chatDetails: Ch
|
|||
message.timestamp,
|
||||
ContentType(message.contentType),
|
||||
message.messageType,
|
||||
self.controller.decodeContentHash(message.sticker.hash),
|
||||
message.sticker.url,
|
||||
message.sticker.pack,
|
||||
message.links,
|
||||
newTransactionParametersItem("","","","","","",-1,""),
|
||||
|
|
|
@ -235,9 +235,6 @@ proc getCurrentFleet*(self: Controller): string =
|
|||
proc getRenderedText*(self: Controller, parsedTextArray: seq[ParsedText]): string =
|
||||
return self.messageService.getRenderedText(parsedTextArray)
|
||||
|
||||
proc decodeContentHash*(self: Controller, hash: string): string =
|
||||
return eth_utils.decodeContentHash(hash)
|
||||
|
||||
proc getTransactionDetails*(self: Controller, message: MessageDto): (string,string) =
|
||||
return self.messageService.getTransactionDetails(message)
|
||||
|
||||
|
|
|
@ -227,9 +227,6 @@ proc getMessageDetails*(self: Controller, messageId: string):
|
|||
proc deleteMessage*(self: Controller, messageId: string) =
|
||||
self.messageService.deleteMessage(messageId)
|
||||
|
||||
proc decodeContentHash*(self: Controller, hash: string): string =
|
||||
return eth_utils.decodeContentHash(hash)
|
||||
|
||||
proc editMessage*(self: Controller, messageId: string, updatedMsg: string) =
|
||||
self.messageService.editMessage(messageId, updatedMsg)
|
||||
|
||||
|
|
|
@ -192,7 +192,7 @@ method newMessagesLoaded*(self: Module, messages: seq[MessageDto], reactions: se
|
|||
m.whisperTimestamp,
|
||||
m.contentType.ContentType,
|
||||
m.messageType,
|
||||
sticker = self.controller.decodeContentHash(m.sticker.hash),
|
||||
sticker = m.sticker.url,
|
||||
m.sticker.pack,
|
||||
m.links,
|
||||
newTransactionParametersItem(m.transactionParameters.id,
|
||||
|
@ -281,7 +281,7 @@ method messageAdded*(self: Module, message: MessageDto) =
|
|||
message.whisperTimestamp,
|
||||
message.contentType.ContentType,
|
||||
message.messageType,
|
||||
sticker = self.controller.decodeContentHash(message.sticker.hash),
|
||||
sticker = message.sticker.url,
|
||||
message.sticker.pack,
|
||||
message.links,
|
||||
newTransactionParametersItem(message.transactionParameters.id,
|
||||
|
|
|
@ -180,7 +180,7 @@ proc buildPinnedMessageItem(self: Module, messageId: string, actionInitiatedBy:
|
|||
m.timestamp,
|
||||
m.contentType.ContentType,
|
||||
m.messageType,
|
||||
self.controller.decodeContentHash(m.sticker.hash),
|
||||
m.sticker.url,
|
||||
m.sticker.pack,
|
||||
m.links,
|
||||
newTransactionParametersItem(m.transactionParameters.id,
|
||||
|
|
|
@ -124,9 +124,6 @@ proc sendSticker*(
|
|||
preferredUsername: string) =
|
||||
self.stickerService.sendSticker(channelId, replyTo, sticker, preferredUsername)
|
||||
|
||||
proc decodeContentHash*(self: Controller, hash: string): string =
|
||||
eth_utils.decodeContentHash(hash)
|
||||
|
||||
proc wei2Eth*(self: Controller, price: Stuint[256]): string =
|
||||
eth_utils.wei2Eth(price)
|
||||
|
||||
|
|
|
@ -49,9 +49,6 @@ method installStickerPack*(self: AccessInterface, packId: string) {.base.} =
|
|||
method uninstallStickerPack*(self: AccessInterface, packId: string) {.base.} =
|
||||
raise newException(ValueError, "No implementation available")
|
||||
|
||||
method decodeContentHash*(self: AccessInterface, hash: string): string {.base.} =
|
||||
raise newException(ValueError, "No implementation available")
|
||||
|
||||
method wei2Eth*(self: AccessInterface, price: Stuint[256]): string {.base.} =
|
||||
raise newException(ValueError, "No implementation available")
|
||||
|
||||
|
|
|
@ -73,9 +73,6 @@ method uninstallStickerPack*(self: Module, packId: string) =
|
|||
method removeRecentStickers*(self: Module, packId: string) =
|
||||
self.controller.removeRecentStickers(packId)
|
||||
|
||||
method decodeContentHash*(self: Module, hash: string): string =
|
||||
self.controller.decodeContentHash(hash)
|
||||
|
||||
method wei2Eth*(self: Module, price: Stuint[256]): string =
|
||||
self.controller.wei2Eth(price)
|
||||
|
||||
|
|
|
@ -123,8 +123,8 @@ QtObject:
|
|||
self.stickerPacksLoaded()
|
||||
self.installedStickerPacksUpdated()
|
||||
|
||||
proc send*(self: View, channelId: string, hash: string, replyTo: string, pack: string) {.slot.} =
|
||||
let sticker = initItem(hash, pack, eth_utils.decodeContentHash(hash))
|
||||
proc send*(self: View, channelId: string, hash: string, replyTo: string, pack: string, url: string) {.slot.} =
|
||||
let sticker = initItem(hash, pack, url)
|
||||
self.addRecentStickerToList(sticker)
|
||||
self.delegate.sendSticker(channelId, replyTo, sticker)
|
||||
|
||||
|
|
|
@ -13,58 +13,6 @@ import ../../common/conversion as common_conversion
|
|||
|
||||
export common_conversion
|
||||
|
||||
proc decodeContentHash*(value: string): string =
|
||||
if value == "":
|
||||
return ""
|
||||
|
||||
# eg encoded sticker multihash cid:
|
||||
# e30101701220eab9a8ef4eac6c3e5836a3768d8e04935c10c67d9a700436a0e53199e9b64d29
|
||||
# e3017012205c531b83da9dd91529a4cf8ecd01cb62c399139e6f767e397d2f038b820c139f (testnet)
|
||||
# e3011220c04c617170b1f5725070428c01280b4c19ae9083b7e6d71b7a0d2a1b5ae3ce30 (testnet)
|
||||
#
|
||||
# The first 4 bytes (in hex) represent:
|
||||
# e3 = codec identifier "ipfs-ns" for content-hash
|
||||
# 01 = unused - sometimes this is NOT included (ie ropsten)
|
||||
# 01 = CID version (effectively unused, as we will decode with CIDv0 regardless)
|
||||
# 70 = codec identifier "dag-pb"
|
||||
|
||||
# ipfs-ns
|
||||
if value[0..1] != "e3":
|
||||
warn "Could not decode sticker. It may still be valid, but requires a different codec to be used", hash=value
|
||||
return ""
|
||||
|
||||
try:
|
||||
# dag-pb
|
||||
let defaultCodec = parseHexInt("70") #dag-pb
|
||||
var codec = defaultCodec # no codec specified
|
||||
var codecStartIdx = 2 # idx of where codec would start if it was specified
|
||||
# handle the case when starts with 0xe30170 instead of 0xe3010170
|
||||
if value[2..5] == "0101":
|
||||
codecStartIdx = 6
|
||||
codec = parseHexInt(value[6..7])
|
||||
elif value[2..3] == "01" and value[4..5] != "12":
|
||||
codecStartIdx = 4
|
||||
codec = parseHexInt(value[4..5])
|
||||
|
||||
# strip the info we no longer need
|
||||
var multiHashStr = value[codecStartIdx + 2..<value.len]
|
||||
|
||||
# The rest of the hash identifies the multihash algo, length, and digest
|
||||
# More info: https://multiformats.io/multihash/
|
||||
# 12 = identifies sha2-256 hash
|
||||
# 20 = multihash length = 32
|
||||
# ...rest = multihash digest
|
||||
let multiHash = MultiHash.init(nimcrypto.fromHex(multiHashStr)).get()
|
||||
let resultTyped = Cid.init(CIDv0, MultiCodec.codec(codec), multiHash).get()
|
||||
let base32Hash = Multibase.encode("base32", resultTyped.data.buffer)
|
||||
if base32Hash.isOk():
|
||||
result = "https://" & base32Hash.get() & ".ipfs.infura-ipfs.io" # TODO: eventually this will not be needed, since messages will return the decoded content hash
|
||||
|
||||
trace "Decoded sticker hash", cid=result
|
||||
except Exception as e:
|
||||
error "Error decoding sticker", hash=value, exception=e.msg
|
||||
raise
|
||||
|
||||
proc isWakuEnabled(): bool =
|
||||
true # TODO:
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ type QuotedMessage* = object
|
|||
|
||||
type Sticker* = object
|
||||
hash*: string
|
||||
url*: string
|
||||
pack*: int
|
||||
|
||||
type GapParameters* = object
|
||||
|
@ -100,6 +101,7 @@ proc toSticker*(jsonObj: JsonNode): Sticker =
|
|||
result = Sticker()
|
||||
discard jsonObj.getProp("hash", result.hash)
|
||||
discard jsonObj.getProp("pack", result.pack)
|
||||
discard jsonObj.getProp("url", result.url)
|
||||
|
||||
proc toGapParameters*(jsonObj: JsonNode): GapParameters =
|
||||
result = GapParameters()
|
||||
|
|
|
@ -17,6 +17,7 @@ QtObject {
|
|||
property bool createChatStartReceiveTransactionProcess: false
|
||||
property string createChatStickerHashId: ""
|
||||
property string createChatStickerPackId: ""
|
||||
property string createChatStickerUrl: ""
|
||||
|
||||
property var groupInfoPopupComponent
|
||||
property var membershipRequestPopup
|
||||
|
@ -175,8 +176,8 @@ QtObject {
|
|||
}
|
||||
}
|
||||
|
||||
function sendSticker(channelId, hash, replyTo, pack) {
|
||||
stickersModuleInst.send(channelId, hash, replyTo, pack)
|
||||
function sendSticker(channelId, hash, replyTo, pack, url) {
|
||||
stickersModuleInst.send(channelId, hash, replyTo, pack, url)
|
||||
}
|
||||
|
||||
function copyToClipboard(text) {
|
||||
|
|
|
@ -118,11 +118,13 @@ Item {
|
|||
Global.openPopup(cmpReceiveTransaction);
|
||||
}
|
||||
else if (root.rootStore.createChatStickerHashId !== "" &&
|
||||
root.rootStore.createChatStickerPackId !== "") {
|
||||
root.rootStore.createChatStickerPackId !== "" &&
|
||||
root.rootStore.createChatStickerUrl !== "") {
|
||||
root.rootStore.sendSticker(chatId,
|
||||
root.rootStore.createChatStickerHashId,
|
||||
"",
|
||||
root.rootStore.createChatStickerPackId);
|
||||
root.rootStore.createChatStickerPackId,
|
||||
root.rootStore.createChatStickerUrl);
|
||||
}
|
||||
else if (root.rootStore.createChatInitMessage !== "" ||
|
||||
root.rootStore.createChatFileUrls.length > 0) {
|
||||
|
|
|
@ -516,7 +516,8 @@ ColumnLayout {
|
|||
root.rootStore.sendSticker(chatContentModule.getMyChatId(),
|
||||
hashId,
|
||||
chatInput.isReply ? chatInput.replyMessageId : "",
|
||||
packId)
|
||||
packId,
|
||||
url)
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -167,6 +167,7 @@ Page {
|
|||
onStickerSelected: {
|
||||
root.rootStore.createChatStickerHashId = hashId;
|
||||
root.rootStore.createChatStickerPackId = packId;
|
||||
root.rootStore.createChatStickerUrl = url;
|
||||
root.createChat();
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ Rectangle {
|
|||
|
||||
signal sendTransactionCommandButtonClicked()
|
||||
signal receiveTransactionCommandButtonClicked()
|
||||
signal stickerSelected(string hashId, string packId)
|
||||
signal stickerSelected(string hashId, string packId, string url)
|
||||
signal sendMessage(var event)
|
||||
signal unblockChat()
|
||||
|
||||
|
@ -815,7 +815,7 @@ Rectangle {
|
|||
recentStickers: control.recentStickers
|
||||
stickerPackList: control.stickerPackList
|
||||
onStickerSelected: {
|
||||
control.stickerSelected(hashId, packId)
|
||||
control.stickerSelected(hashId, packId, url)
|
||||
control.hideExtendedArea();
|
||||
messageInputField.forceActiveFocus();
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ StatusGridView {
|
|||
cellHeight: 88
|
||||
model: stickerList
|
||||
focus: true
|
||||
signal stickerClicked(string hash, int packId)
|
||||
signal stickerClicked(string hash, int packId, string url)
|
||||
delegate: Item {
|
||||
width: root.cellWidth
|
||||
height: root.cellHeight
|
||||
|
@ -32,7 +32,7 @@ StatusGridView {
|
|||
height: 80
|
||||
source: url
|
||||
onClicked: {
|
||||
root.stickerClicked(hash, packId)
|
||||
root.stickerClicked(hash, packId, url)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ Popup {
|
|||
property var store
|
||||
property var recentStickers: StickerData {}
|
||||
property var stickerPackList: StickerPackData {}
|
||||
signal stickerSelected(string hashId, string packId)
|
||||
signal stickerSelected(string hashId, string packId, string url)
|
||||
property int installedPacksCount: stickersModule.numInstalledStickerPacks
|
||||
property bool stickerPacksLoaded: false
|
||||
width: 360
|
||||
|
@ -172,7 +172,7 @@ Popup {
|
|||
model: recentStickers
|
||||
packId: stickerPackListView.selectedPackId
|
||||
onStickerClicked: {
|
||||
root.stickerSelected(hash, packId)
|
||||
root.stickerSelected(hash, packId, url)
|
||||
root.close()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue