diff --git a/VERSION b/VERSION
index 79050755984..d3d47da9d4a 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.151.11
+0.151.12
diff --git a/appdatabase/migrations/bindata.go b/appdatabase/migrations/bindata.go
index 883345dc8e4..1b0ce28682b 100644
--- a/appdatabase/migrations/bindata.go
+++ b/appdatabase/migrations/bindata.go
@@ -144,7 +144,7 @@ func _1640111208_dummyUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1640111208_dummy.up.sql", size: 258, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1640111208_dummy.up.sql", size: 258, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xf0, 0xae, 0x20, 0x6e, 0x75, 0xd1, 0x36, 0x14, 0xf2, 0x40, 0xe5, 0xd6, 0x7a, 0xc4, 0xa5, 0x72, 0xaa, 0xb5, 0x4d, 0x71, 0x97, 0xb8, 0xe8, 0x95, 0x22, 0x95, 0xa2, 0xac, 0xaf, 0x48, 0x58}}
return a, nil
}
@@ -164,7 +164,7 @@ func _1642666031_add_removed_clock_to_bookmarksUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1642666031_add_removed_clock_to_bookmarks.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1642666031_add_removed_clock_to_bookmarks.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x84, 0x4e, 0x38, 0x99, 0x7a, 0xc, 0x90, 0x13, 0xec, 0xfe, 0x2f, 0x55, 0xff, 0xb7, 0xb6, 0xaa, 0x96, 0xc6, 0x92, 0x79, 0xcc, 0xee, 0x4e, 0x99, 0x53, 0xfe, 0x1c, 0xbb, 0x32, 0x2, 0xa4, 0x27}}
return a, nil
}
@@ -184,7 +184,7 @@ func _1643644541_gif_api_key_settingUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1643644541_gif_api_key_setting.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1643644541_gif_api_key_setting.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x94, 0x28, 0xfb, 0x66, 0xd1, 0x7c, 0xb8, 0x89, 0xe2, 0xb4, 0x71, 0x65, 0x24, 0x57, 0x22, 0x95, 0x38, 0x97, 0x3, 0x9b, 0xc6, 0xa4, 0x41, 0x7b, 0xba, 0xf7, 0xdb, 0x70, 0xf7, 0x20, 0x3a}}
return a, nil
}
@@ -204,7 +204,7 @@ func _1644188994_recent_stickersUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1644188994_recent_stickers.up.sql", size: 79, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1644188994_recent_stickers.up.sql", size: 79, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0xad, 0xaa, 0x30, 0xbf, 0x4, 0x7, 0xf8, 0xc3, 0x3, 0xb8, 0x97, 0x23, 0x2b, 0xbd, 0x1c, 0x60, 0x69, 0xb0, 0x42, 0x5e, 0x6b, 0xd, 0xa7, 0xa3, 0x6b, 0x2e, 0xdc, 0x70, 0x13, 0x72, 0x7}}
return a, nil
}
@@ -224,7 +224,7 @@ func _1646659233_add_address_to_dapp_permisssionUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1646659233_add_address_to_dapp_permisssion.up.sql", size: 700, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1646659233_add_address_to_dapp_permisssion.up.sql", size: 700, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0xb0, 0x35, 0xcc, 0x2e, 0x16, 0xe6, 0x15, 0x86, 0x2c, 0x37, 0x80, 0xae, 0xa3, 0xc5, 0x31, 0x78, 0x5, 0x9d, 0xcd, 0x7b, 0xeb, 0x5f, 0xf2, 0xb3, 0x74, 0x72, 0xdf, 0xcf, 0x88, 0xb, 0x40}}
return a, nil
}
@@ -244,7 +244,7 @@ func _1646841105_add_emoji_accountUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1646841105_add_emoji_account.up.sql", size: 96, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1646841105_add_emoji_account.up.sql", size: 96, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe6, 0x77, 0x29, 0x95, 0x18, 0x64, 0x82, 0x63, 0xe7, 0xaf, 0x6c, 0xa9, 0x15, 0x7d, 0x46, 0xa6, 0xbc, 0xdf, 0xa7, 0xd, 0x2b, 0xd2, 0x2d, 0x97, 0x4d, 0xa, 0x6b, 0xd, 0x6e, 0x90, 0x42, 0x5c}}
return a, nil
}
@@ -264,7 +264,7 @@ func _1647278782_display_nameUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1647278782_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1647278782_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa1, 0x1f, 0x3e, 0x61, 0x65, 0x8d, 0xff, 0xee, 0xde, 0xc5, 0x91, 0xd9, 0x5c, 0xb5, 0xe2, 0xf0, 0xb7, 0xe7, 0x5c, 0x5c, 0x16, 0x25, 0x89, 0xee, 0x78, 0x12, 0xea, 0x3e, 0x48, 0x41, 0xa6}}
return a, nil
}
@@ -284,7 +284,7 @@ func _1647862838_reset_last_backupUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1647862838_reset_last_backup.up.sql", size: 37, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1647862838_reset_last_backup.up.sql", size: 37, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x21, 0xe3, 0xd5, 0xf6, 0x5f, 0xfe, 0x65, 0xfa, 0x1d, 0x88, 0xf8, 0x5f, 0x24, 0x71, 0x34, 0x68, 0x96, 0x2a, 0x60, 0x87, 0x15, 0x82, 0x4d, 0x8a, 0x59, 0x3d, 0x1f, 0xd8, 0x56, 0xd4, 0xfb, 0xda}}
return a, nil
}
@@ -304,7 +304,7 @@ func _1647871652_add_settings_sync_clock_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1647871652_add_settings_sync_clock_table.up.sql", size: 1044, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1647871652_add_settings_sync_clock_table.up.sql", size: 1044, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd8, 0x58, 0xec, 0x85, 0x90, 0xfa, 0x30, 0x98, 0x98, 0x9a, 0xa6, 0xa8, 0x96, 0x2b, 0x38, 0x93, 0xf3, 0xae, 0x46, 0x74, 0xa4, 0x41, 0x62, 0x9b, 0x2, 0x86, 0xbf, 0xe5, 0x2a, 0xce, 0xe2, 0xc0}}
return a, nil
}
@@ -324,7 +324,7 @@ func _1647880168_add_torrent_configUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1647880168_add_torrent_config.up.sql", size: 211, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1647880168_add_torrent_config.up.sql", size: 211, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0x92, 0x22, 0x37, 0x96, 0xf3, 0xb5, 0x5b, 0x27, 0xd0, 0x7d, 0x43, 0x5, 0x4e, 0x9d, 0xe2, 0x49, 0xbe, 0x86, 0x31, 0xa1, 0x89, 0xff, 0xd6, 0x51, 0xe0, 0x9c, 0xb, 0xda, 0xfc, 0xf2, 0x93}}
return a, nil
}
@@ -344,7 +344,7 @@ func _1647882837_add_communities_settings_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1647882837_add_communities_settings_table.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1647882837_add_communities_settings_table.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbd, 0x87, 0x78, 0x99, 0xd9, 0x5d, 0xbd, 0xf7, 0x57, 0x9c, 0xca, 0x97, 0xbd, 0xb3, 0xe9, 0xb5, 0x89, 0x31, 0x3f, 0xf6, 0x5c, 0x13, 0xb, 0xc3, 0x54, 0x93, 0x18, 0x40, 0x7, 0x82, 0xfe, 0x7e}}
return a, nil
}
@@ -364,7 +364,7 @@ func _1647956635_add_waku_messages_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1647956635_add_waku_messages_table.up.sql", size: 266, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1647956635_add_waku_messages_table.up.sql", size: 266, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0xe, 0xe1, 0xdc, 0xda, 0x2e, 0x89, 0x8d, 0xdc, 0x2a, 0x1c, 0x13, 0xa1, 0xfc, 0xfe, 0xf, 0xb2, 0xb9, 0x85, 0xc8, 0x45, 0xd6, 0xd1, 0x7, 0x5c, 0xa3, 0x8, 0x47, 0x44, 0x6d, 0x96, 0xe0}}
return a, nil
}
@@ -384,7 +384,7 @@ func _1648554928_network_testUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1648554928_network_test.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1648554928_network_test.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9a, 0xc5, 0x7f, 0x87, 0xf3, 0x2c, 0xf7, 0xbb, 0xd3, 0x3a, 0x4e, 0x76, 0x88, 0xca, 0xaf, 0x73, 0xce, 0x8f, 0xa1, 0xf6, 0x3d, 0x4d, 0xed, 0x6f, 0x49, 0xf2, 0xfe, 0x56, 0x2a, 0x60, 0x68, 0xca}}
return a, nil
}
@@ -404,7 +404,7 @@ func _1649174829_add_visitble_tokenUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1649174829_add_visitble_token.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1649174829_add_visitble_token.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0x22, 0xc0, 0x2b, 0x3f, 0x4f, 0x3d, 0x5e, 0x4c, 0x68, 0x7c, 0xd0, 0x15, 0x36, 0x9f, 0xec, 0xa1, 0x2a, 0x7b, 0xb4, 0xe3, 0xc6, 0xc9, 0xb4, 0x81, 0x50, 0x4a, 0x11, 0x3b, 0x35, 0x7, 0xcf}}
return a, nil
}
@@ -424,7 +424,7 @@ func _1649882262_add_derived_from_accountsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1649882262_add_derived_from_accounts.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1649882262_add_derived_from_accounts.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0xb9, 0x44, 0x4d, 0x85, 0x8d, 0x7f, 0xb4, 0xae, 0x4f, 0x5c, 0x66, 0x64, 0xb6, 0xe2, 0xe, 0x3d, 0xad, 0x9d, 0x8, 0x4f, 0xab, 0x6e, 0xa8, 0x7d, 0x76, 0x3, 0xad, 0x96, 0x1, 0xee, 0x5c}}
return a, nil
}
@@ -444,7 +444,7 @@ func _1650612625_add_community_message_archive_hashes_tableUpSql() (*asset, erro
return nil, err
}
- info := bindataFileInfo{name: "1650612625_add_community_message_archive_hashes_table.up.sql", size: 130, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1650612625_add_community_message_archive_hashes_table.up.sql", size: 130, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0x31, 0xb3, 0x75, 0x23, 0xe2, 0x45, 0xe, 0x47, 0x1b, 0x35, 0xa5, 0x6e, 0x83, 0x4e, 0x64, 0x7d, 0xd7, 0xa2, 0xda, 0xe9, 0x53, 0xf1, 0x16, 0x86, 0x2c, 0x57, 0xad, 0xfa, 0xca, 0x39, 0xde}}
return a, nil
}
@@ -464,7 +464,7 @@ func _1650616788_add_communities_archives_info_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1650616788_add_communities_archives_info_table.up.sql", size: 208, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1650616788_add_communities_archives_info_table.up.sql", size: 208, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x4f, 0x80, 0x45, 0xb9, 0xd9, 0x15, 0xe2, 0x78, 0xd0, 0xcb, 0x71, 0xc1, 0x1b, 0xb7, 0x1b, 0x1b, 0x97, 0xfe, 0x47, 0x53, 0x3c, 0x62, 0xbc, 0xdd, 0x3a, 0x94, 0x1a, 0xc, 0x48, 0x76, 0xe}}
return a, nil
}
@@ -484,7 +484,7 @@ func _1652715604_add_clock_accountsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1652715604_add_clock_accounts.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1652715604_add_clock_accounts.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0xd9, 0x8d, 0x73, 0xc9, 0xef, 0xfa, 0xb1, 0x4b, 0xa5, 0xf3, 0x5, 0x19, 0x26, 0x46, 0xf8, 0x47, 0x93, 0xdb, 0xac, 0x2, 0xef, 0xf9, 0x71, 0x56, 0x83, 0xe6, 0x2d, 0xb0, 0xd7, 0x83, 0x5c}}
return a, nil
}
@@ -504,7 +504,7 @@ func _1653037334_add_notifications_settings_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1653037334_add_notifications_settings_table.up.sql", size: 1276, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1653037334_add_notifications_settings_table.up.sql", size: 1276, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4b, 0xc4, 0x65, 0xac, 0xa, 0xf2, 0xef, 0xb6, 0x39, 0x3c, 0xc5, 0xb1, 0xb2, 0x9c, 0x86, 0x58, 0xe0, 0x38, 0xcb, 0x57, 0x3c, 0x76, 0x73, 0x87, 0x79, 0x4e, 0xf6, 0xed, 0xb0, 0x8e, 0x9e, 0xa}}
return a, nil
}
@@ -524,7 +524,7 @@ func _1654702119_add_mutual_contact_settingsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1654702119_add_mutual_contact_settings.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1654702119_add_mutual_contact_settings.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x26, 0x66, 0x67, 0x50, 0xfe, 0xd7, 0xe3, 0x29, 0x8b, 0xff, 0x9d, 0x5a, 0x87, 0xa7, 0x99, 0x6e, 0xd6, 0xcd, 0x2e, 0xbb, 0x17, 0xdf, 0x7f, 0xf7, 0xa3, 0xfa, 0x32, 0x7c, 0x2d, 0x92, 0xc8, 0x74}}
return a, nil
}
@@ -544,7 +544,7 @@ func _1655375270_add_clock_field_to_communities_settings_tableUpSql() (*asset, e
return nil, err
}
- info := bindataFileInfo{name: "1655375270_add_clock_field_to_communities_settings_table.up.sql", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1655375270_add_clock_field_to_communities_settings_table.up.sql", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x19, 0xc5, 0xc0, 0xf9, 0x84, 0x53, 0xdf, 0x83, 0xcf, 0xb6, 0x40, 0x6d, 0xf5, 0xdc, 0x77, 0x37, 0xb7, 0xe3, 0xa, 0x75, 0xe7, 0x6, 0x11, 0xca, 0x2b, 0x51, 0x92, 0xdd, 0x7d, 0xdb, 0xc3, 0xf5}}
return a, nil
}
@@ -564,7 +564,7 @@ func _1655385721_drop_networks_configUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1655385721_drop_networks_config.up.sql", size: 27, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1655385721_drop_networks_config.up.sql", size: 27, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfc, 0xa7, 0x20, 0xbb, 0x67, 0x21, 0xe, 0xc6, 0xc8, 0x21, 0x74, 0xe0, 0xce, 0xc8, 0xe2, 0x2, 0xb4, 0xea, 0xf0, 0xe5, 0xc4, 0x4d, 0xdd, 0xd4, 0x52, 0x31, 0xa9, 0x3d, 0xcd, 0xd8, 0x9b, 0xab}}
return a, nil
}
@@ -584,7 +584,7 @@ func _1655385724_networks_chaincolor_shortnameUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1655385724_networks_chainColor_shortName.up.sql", size: 220, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1655385724_networks_chainColor_shortName.up.sql", size: 220, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd9, 0xe7, 0x84, 0xbb, 0x5f, 0xd2, 0x2c, 0x42, 0x88, 0x62, 0x52, 0xb6, 0x58, 0x31, 0xac, 0xc, 0x96, 0x2b, 0x1b, 0xe5, 0x4e, 0x9a, 0x3a, 0xf6, 0xf6, 0xfc, 0xa9, 0x1a, 0x35, 0x62, 0x28, 0x88}}
return a, nil
}
@@ -604,7 +604,7 @@ func _1655456688_add_deleted_at_field_to_bookmarks_tableUpSql() (*asset, error)
return nil, err
}
- info := bindataFileInfo{name: "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe7, 0x9a, 0xbd, 0x9a, 0xc9, 0xf, 0xdf, 0x90, 0x0, 0x5d, 0xea, 0x6e, 0x7d, 0x51, 0x95, 0xcd, 0x90, 0xd3, 0x1a, 0x36, 0x6c, 0xf4, 0xbd, 0xa7, 0x6b, 0xbf, 0xe5, 0xdb, 0xa3, 0x88, 0xe3, 0x50}}
return a, nil
}
@@ -624,7 +624,7 @@ func _1655462032_create_bookmarks_deleted_at_indexUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1655462032_create_bookmarks_deleted_at_index.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1655462032_create_bookmarks_deleted_at_index.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x8e, 0x20, 0x6b, 0x14, 0x9e, 0xcd, 0x97, 0xd3, 0xfe, 0x62, 0x3, 0x26, 0x59, 0x1, 0x6c, 0x99, 0xef, 0x6d, 0x21, 0xd4, 0xb5, 0xa3, 0xf4, 0x39, 0x40, 0x54, 0x6, 0xd, 0x60, 0x13, 0x38}}
return a, nil
}
@@ -644,7 +644,7 @@ func _1657617291_add_multi_transactions_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1657617291_add_multi_transactions_table.up.sql", size: 412, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1657617291_add_multi_transactions_table.up.sql", size: 412, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x86, 0xb0, 0x4e, 0x8c, 0x4, 0x82, 0xb4, 0x43, 0xaa, 0xd0, 0x16, 0xdd, 0xcb, 0x88, 0x81, 0xac, 0x4, 0x34, 0x1a, 0x8f, 0x2e, 0xc5, 0x69, 0xb, 0xf0, 0x17, 0xf7, 0xe3, 0x9, 0xe, 0x54, 0xe0}}
return a, nil
}
@@ -664,7 +664,7 @@ func _1660134042_add_social_links_settings_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1660134042_add_social_links_settings_table.up.sql", size: 334, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1660134042_add_social_links_settings_table.up.sql", size: 334, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x84, 0x73, 0xb6, 0xe7, 0x3f, 0xaa, 0x39, 0x9a, 0x56, 0x56, 0x31, 0xf1, 0x8e, 0x26, 0x23, 0x1, 0xe4, 0xfa, 0x98, 0xfe, 0x78, 0x87, 0x20, 0xcb, 0x52, 0xf4, 0x38, 0x7f, 0xc4, 0x1c, 0x4, 0x22}}
return a, nil
}
@@ -684,7 +684,7 @@ func _1660134060_settings_bioUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1660134060_settings_bio.up.sql", size: 91, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1660134060_settings_bio.up.sql", size: 91, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x46, 0x25, 0xa0, 0xa6, 0x47, 0xff, 0xbc, 0x2a, 0x0, 0xff, 0x59, 0x4b, 0xb0, 0xc9, 0x4e, 0x15, 0xe4, 0xd9, 0xda, 0xeb, 0xfe, 0x55, 0x98, 0xc3, 0x9d, 0x96, 0xe7, 0xf, 0xd1, 0x5c, 0x93, 0x73}}
return a, nil
}
@@ -704,7 +704,7 @@ func _1660134070_add_wakuv2_storeUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1660134070_add_wakuv2_store.up.sql", size: 269, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1660134070_add_wakuv2_store.up.sql", size: 269, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0xe6, 0xc3, 0x9, 0xef, 0xdc, 0xae, 0x49, 0x30, 0x78, 0x54, 0xd6, 0xdb, 0xbf, 0xc0, 0x8e, 0x25, 0x8f, 0xfc, 0x67, 0x80, 0x39, 0x37, 0xd4, 0x86, 0xc1, 0x85, 0xc8, 0x99, 0xc4, 0x59, 0xd4}}
return a, nil
}
@@ -724,7 +724,7 @@ func _1660134072_waku2_store_messagesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1660134072_waku2_store_messages.up.sql", size: 497, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1660134072_waku2_store_messages.up.sql", size: 497, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xeb, 0xb4, 0xa0, 0xa1, 0x2b, 0xcb, 0x4c, 0x3c, 0xc6, 0xd0, 0xe8, 0x96, 0xe3, 0x96, 0xf1, 0x4f, 0x1f, 0xe0, 0xe7, 0x1f, 0x85, 0xa3, 0xe, 0xf7, 0x52, 0x56, 0x63, 0x2b, 0xb0, 0x87, 0x7b}}
return a, nil
}
@@ -744,7 +744,7 @@ func _1662365868_add_key_uid_accountsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1662365868_add_key_uid_accounts.up.sql", size: 68, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1662365868_add_key_uid_accounts.up.sql", size: 68, mode: os.FileMode(0644), modTime: time.Unix(1663587122, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc6, 0xd8, 0x2f, 0x2f, 0x3b, 0xa8, 0xbd, 0x6d, 0xf6, 0x87, 0x7e, 0xd2, 0xf1, 0xa2, 0xf7, 0x81, 0x6a, 0x23, 0x10, 0xbc, 0xbf, 0x5b, 0xe7, 0x2b, 0x9c, 0xa9, 0x8a, 0x18, 0xbb, 0xd0, 0x86, 0x91}}
return a, nil
}
@@ -764,7 +764,7 @@ func _1662447680_add_keypairs_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1662447680_add_keypairs_table.up.sql", size: 218, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1662447680_add_keypairs_table.up.sql", size: 218, mode: os.FileMode(0644), modTime: time.Unix(1663587122, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0x25, 0xa9, 0xc7, 0x63, 0x27, 0x97, 0x35, 0x5f, 0x6b, 0xab, 0x26, 0xcb, 0xf9, 0xbd, 0x5e, 0xac, 0x3, 0xa0, 0x5e, 0xb9, 0x71, 0xa3, 0x1f, 0xb3, 0x4f, 0x7f, 0x79, 0x28, 0x48, 0xbe, 0xc}}
return a, nil
}
@@ -784,7 +784,7 @@ func _1662460056_move_favourites_to_saved_addressesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1662460056_move_favourites_to_saved_addresses.up.sql", size: 233, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1662460056_move_favourites_to_saved_addresses.up.sql", size: 233, mode: os.FileMode(0644), modTime: time.Unix(1663587122, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0xa2, 0x8c, 0xa3, 0xec, 0xad, 0xdf, 0xc3, 0x48, 0x5, 0x9b, 0x50, 0x25, 0x59, 0xae, 0x7d, 0xee, 0x58, 0xd2, 0x41, 0x27, 0xf2, 0x22, 0x2e, 0x9a, 0xb9, 0x4a, 0xcc, 0x38, 0x6e, 0x3a, 0xb2}}
return a, nil
}
@@ -804,7 +804,7 @@ func _1662738097_add_base_fee_transactionUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1662738097_add_base_fee_transaction.up.sql", size: 112, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1662738097_add_base_fee_transaction.up.sql", size: 112, mode: os.FileMode(0644), modTime: time.Unix(1663587122, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0xfb, 0x10, 0xae, 0xfc, 0x77, 0x70, 0x98, 0x6f, 0xec, 0xaa, 0xcd, 0x7, 0xc7, 0x74, 0x23, 0xc, 0xd5, 0x1e, 0x82, 0xdd, 0xfe, 0xff, 0x3b, 0xd2, 0x49, 0x10, 0x5b, 0x30, 0xc, 0x2d, 0xb0}}
return a, nil
}
@@ -824,7 +824,7 @@ func _1662972194_add_keypairs_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1662972194_add_keypairs_table.up.sql", size: 345, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1662972194_add_keypairs_table.up.sql", size: 345, mode: os.FileMode(0644), modTime: time.Unix(1663587122, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0x76, 0xf2, 0x86, 0xe1, 0x7e, 0xe9, 0x47, 0x32, 0x48, 0xd5, 0x6b, 0xe5, 0xd, 0xab, 0xb7, 0xf1, 0xd4, 0xf1, 0xad, 0x38, 0xa6, 0x11, 0xe7, 0xce, 0x5c, 0x11, 0x11, 0xf, 0x47, 0xb2, 0x4}}
return a, nil
}
@@ -844,7 +844,7 @@ func _1664392661_add_third_party_id_to_waku_messagesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1664392661_add_third_party_id_to_waku_messages.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1664392661_add_third_party_id_to_waku_messages.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1664889752, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfd, 0x67, 0x66, 0x9e, 0x66, 0x74, 0xce, 0x1c, 0xb, 0x1b, 0x9d, 0xd5, 0xfc, 0x65, 0xe, 0x83, 0x90, 0x4c, 0x61, 0x4e, 0x6b, 0xe7, 0x86, 0xbe, 0x36, 0x4f, 0x91, 0x36, 0x4, 0x47, 0x7b, 0x82}}
return a, nil
}
@@ -864,7 +864,7 @@ func _1664783660_add_sync_info_to_saved_addressesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1664783660_add_sync_info_to_saved_addresses.up.sql", size: 388, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1664783660_add_sync_info_to_saved_addresses.up.sql", size: 388, mode: os.FileMode(0644), modTime: time.Unix(1666188919, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x67, 0x7c, 0x3a, 0x95, 0x4e, 0x55, 0xb2, 0xbd, 0xb4, 0x18, 0x93, 0xc1, 0xcf, 0x9f, 0x12, 0xbb, 0x49, 0x8a, 0x2a, 0x6a, 0x2a, 0x7f, 0xad, 0x44, 0xc3, 0xf, 0x3a, 0x79, 0x18, 0xb9, 0x4c, 0x64}}
return a, nil
}
@@ -884,7 +884,7 @@ func _1668109917_wakunodesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1668109917_wakunodes.up.sql", size: 99, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1668109917_wakunodes.up.sql", size: 99, mode: os.FileMode(0644), modTime: time.Unix(1669399895, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x29, 0xaa, 0x9e, 0x2, 0x66, 0x85, 0x69, 0xa8, 0xd9, 0xe2, 0x4b, 0x8d, 0x2a, 0x9c, 0xdf, 0xd2, 0xef, 0x64, 0x58, 0xe3, 0xa6, 0xe7, 0xc1, 0xd1, 0xc8, 0x9c, 0xc0, 0x2c, 0x1, 0xa8, 0x7b, 0x81}}
return a, nil
}
@@ -904,7 +904,7 @@ func _1670249678_display_name_to_settings_sync_clock_tableUpSql() (*asset, error
return nil, err
}
- info := bindataFileInfo{name: "1670249678_display_name_to_settings_sync_clock_table.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1670249678_display_name_to_settings_sync_clock_table.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x39, 0x18, 0xdc, 0xc4, 0x1f, 0x79, 0x22, 0x16, 0x4d, 0xdf, 0x6c, 0x66, 0xd5, 0xa4, 0x88, 0x5d, 0x5, 0x37, 0xa7, 0x41, 0x5, 0x50, 0xae, 0x12, 0xfa, 0x7e, 0x89, 0x24, 0x5c, 0xae, 0x30, 0xfc}}
return a, nil
}
@@ -924,7 +924,7 @@ func _1670836810_add_imported_flag_to_community_archive_hashesUpSql() (*asset, e
return nil, err
}
- info := bindataFileInfo{name: "1670836810_add_imported_flag_to_community_archive_hashes.up.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1670836810_add_imported_flag_to_community_archive_hashes.up.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1673009770, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6f, 0xf, 0xf0, 0xbd, 0xfe, 0x63, 0x25, 0x8f, 0x5e, 0x46, 0x4b, 0x45, 0x31, 0x8b, 0x3e, 0xd8, 0x6b, 0x5d, 0x9d, 0x6d, 0x10, 0x9a, 0x87, 0x4b, 0x18, 0xc6, 0x39, 0x81, 0x6e, 0xe4, 0x75, 0xfb}}
return a, nil
}
@@ -944,7 +944,7 @@ func _1671438731_add_magnetlink_uri_to_communities_archive_infoUpSql() (*asset,
return nil, err
}
- info := bindataFileInfo{name: "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xda, 0x8b, 0x4b, 0xd6, 0xd8, 0xe2, 0x3d, 0xf7, 0x6b, 0xcd, 0x1e, 0x70, 0x9, 0x2e, 0x35, 0x4, 0x61, 0xc3, 0xb5, 0x9d, 0xc5, 0x27, 0x21, 0xa, 0x5a, 0xd6, 0x3e, 0xa6, 0x24, 0xa2, 0x12, 0xdf}}
return a, nil
}
@@ -964,7 +964,7 @@ func _1672933930_switcher_cardUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1672933930_switcher_card.up.sql", size: 162, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1672933930_switcher_card.up.sql", size: 162, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x39, 0xba, 0xdc, 0xbb, 0x40, 0x4, 0xf2, 0x10, 0xdf, 0xb4, 0xd2, 0x80, 0x8a, 0x74, 0x4d, 0xf6, 0xbc, 0x50, 0x7, 0xd, 0x22, 0x7f, 0xc4, 0xaf, 0xaa, 0xde, 0xdc, 0x71, 0xe9, 0x42, 0x98, 0x36}}
return a, nil
}
@@ -984,7 +984,7 @@ func _1674056187_add_price_cacheUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1674056187_add_price_cache.up.sql", size: 255, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1674056187_add_price_cache.up.sql", size: 255, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x79, 0x6a, 0x9b, 0x28, 0xd1, 0x22, 0xf0, 0x84, 0x76, 0x40, 0x39, 0x49, 0x15, 0x5d, 0xaa, 0xfd, 0x11, 0xff, 0x13, 0x27, 0x42, 0x12, 0xfa, 0x82, 0xe6, 0x7a, 0xf0, 0x5e, 0x1f, 0xe3, 0xba}}
return a, nil
}
@@ -1004,7 +1004,7 @@ func _1674136690_ens_usernamesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1674136690_ens_usernames.up.sql", size: 98, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1674136690_ens_usernames.up.sql", size: 98, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x7a, 0xf3, 0xa8, 0x88, 0x99, 0xd6, 0x9c, 0x69, 0x48, 0x3c, 0x10, 0xda, 0x72, 0xdc, 0x14, 0xd, 0x6e, 0x8c, 0x82, 0x92, 0x2d, 0x2c, 0xee, 0x4c, 0x70, 0xa4, 0xdc, 0x5c, 0x5, 0x2, 0xc3}}
return a, nil
}
@@ -1024,7 +1024,7 @@ func _1674232431_add_balance_historyUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1674232431_add_balance_history.up.sql", size: 698, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1674232431_add_balance_history.up.sql", size: 698, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0xb5, 0x18, 0xca, 0x4a, 0x93, 0xbb, 0x6f, 0xa4, 0xee, 0xe4, 0x3e, 0xff, 0x6a, 0x4b, 0xe2, 0xe1, 0x61, 0x28, 0xee, 0xc5, 0x26, 0x57, 0x61, 0x5e, 0x6d, 0x44, 0x1e, 0x85, 0x43, 0x70, 0xa2}}
return a, nil
}
@@ -1044,7 +1044,7 @@ func _1676368933_keypairs_to_keycardsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1676368933_keypairs_to_keycards.up.sql", size: 639, mode: os.FileMode(0644), modTime: time.Unix(1677122376, 0)}
+ info := bindataFileInfo{name: "1676368933_keypairs_to_keycards.up.sql", size: 639, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x93, 0x27, 0x2, 0xf0, 0x37, 0x81, 0x65, 0xa4, 0xb3, 0x5b, 0x60, 0x36, 0x95, 0xfc, 0x81, 0xf0, 0x3b, 0x7c, 0xc3, 0x2c, 0x85, 0xbd, 0x38, 0x46, 0xa4, 0x95, 0x4a, 0x6, 0x3e, 0x74, 0xd5}}
return a, nil
}
@@ -1064,7 +1064,7 @@ func _1676951398_add_currency_format_cacheUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1676951398_add_currency_format_cache.up.sql", size: 291, mode: os.FileMode(0644), modTime: time.Unix(1677122376, 0)}
+ info := bindataFileInfo{name: "1676951398_add_currency_format_cache.up.sql", size: 291, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xa3, 0x76, 0x35, 0xca, 0xf, 0xe8, 0xdf, 0xd9, 0x61, 0xf9, 0xed, 0xfc, 0x6d, 0xf5, 0xe, 0x11, 0x88, 0xbd, 0x14, 0x92, 0xc6, 0x57, 0x53, 0xe, 0xcd, 0x52, 0xf4, 0xa9, 0xb1, 0xdd, 0xfd}}
return a, nil
}
@@ -1084,7 +1084,7 @@ func _1676968196_keycards_add_clock_columnUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1676968196_keycards_add_clock_column.up.sql", size: 73, mode: os.FileMode(0644), modTime: time.Unix(1677564198, 0)}
+ info := bindataFileInfo{name: "1676968196_keycards_add_clock_column.up.sql", size: 73, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4c, 0xf, 0x1c, 0x28, 0x41, 0x57, 0x57, 0x6c, 0xe, 0x75, 0x6b, 0x75, 0x12, 0x0, 0x18, 0x1e, 0x88, 0x1e, 0x45, 0xe0, 0x32, 0xb9, 0xd4, 0xd9, 0x2e, 0xc8, 0xb, 0x80, 0x6, 0x51, 0x3d, 0x28}}
return a, nil
}
@@ -1104,7 +1104,7 @@ func _1676968197_add_fallback_rpc_to_networksUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1676968197_add_fallback_rpc_to_networks.up.sql", size: 112, mode: os.FileMode(0644), modTime: time.Unix(1677576114, 0)}
+ info := bindataFileInfo{name: "1676968197_add_fallback_rpc_to_networks.up.sql", size: 112, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x6a, 0xc6, 0x45, 0xfa, 0x62, 0x84, 0x74, 0x6d, 0x7c, 0xd7, 0x1d, 0x79, 0xb6, 0x38, 0x43, 0xa8, 0x8, 0x6b, 0x75, 0x3d, 0x9, 0x2, 0xc5, 0x9f, 0xbb, 0x45, 0x56, 0x4c, 0x4e, 0x17, 0x89}}
return a, nil
}
@@ -1124,7 +1124,7 @@ func _1677674090_add_chains_ens_istest_to_saved_addressesUpSql() (*asset, error)
return nil, err
}
- info := bindataFileInfo{name: "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql", size: 638, mode: os.FileMode(0644), modTime: time.Unix(1678240714, 0)}
+ info := bindataFileInfo{name: "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql", size: 638, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0x2d, 0xa4, 0x1b, 0xf6, 0x6a, 0x13, 0x7b, 0xe, 0x59, 0xcd, 0xe2, 0x4e, 0x81, 0x99, 0xc4, 0x33, 0x84, 0xde, 0x66, 0xca, 0xac, 0x2f, 0x5, 0x90, 0xac, 0xfd, 0x4e, 0xfc, 0x55, 0x44, 0xe5}}
return a, nil
}
@@ -1144,7 +1144,7 @@ func _1677681143_accounts_table_type_column_updateUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1677681143_accounts_table_type_column_update.up.sql", size: 135, mode: os.FileMode(0644), modTime: time.Unix(1678240714, 0)}
+ info := bindataFileInfo{name: "1677681143_accounts_table_type_column_update.up.sql", size: 135, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0xc4, 0x6, 0x42, 0x50, 0x1d, 0xf4, 0x48, 0x55, 0xbc, 0xa2, 0x19, 0xdd, 0xad, 0xc8, 0xc, 0xa7, 0x30, 0xb6, 0xaf, 0xe, 0x2b, 0xaa, 0x2a, 0xa4, 0xe1, 0xb9, 0x41, 0x23, 0x66, 0xd3, 0x3}}
return a, nil
}
@@ -1164,7 +1164,7 @@ func _1678264207_accounts_table_new_columns_addedUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1678264207_accounts_table_new_columns_added.up.sql", size: 130, mode: os.FileMode(0644), modTime: time.Unix(1680083223, 0)}
+ info := bindataFileInfo{name: "1678264207_accounts_table_new_columns_added.up.sql", size: 130, mode: os.FileMode(0644), modTime: time.Unix(1680619081, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xd4, 0xf3, 0x35, 0xef, 0x5c, 0x19, 0x3c, 0x15, 0x90, 0x60, 0xbd, 0x1f, 0x81, 0xf0, 0x86, 0x73, 0x89, 0xa0, 0x70, 0xf2, 0x46, 0xae, 0xea, 0xd0, 0xc6, 0x9e, 0x55, 0x4a, 0x54, 0x62, 0xbb}}
return a, nil
}
@@ -1184,7 +1184,7 @@ func _1680770368_add_bio_to_settings_sync_clock_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1680770368_add_bio_to_settings_sync_clock_table.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1681777994, 0)}
+ info := bindataFileInfo{name: "1680770368_add_bio_to_settings_sync_clock_table.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1682559310, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4a, 0x52, 0xf6, 0x3f, 0xaa, 0xd, 0xa0, 0xee, 0xe8, 0xe6, 0x16, 0x21, 0x80, 0x61, 0xe4, 0x7a, 0x4e, 0x37, 0x8d, 0x30, 0x51, 0x20, 0x4d, 0x15, 0x47, 0xfb, 0x6, 0xa1, 0xce, 0xc8, 0x27, 0x5a}}
return a, nil
}
@@ -1204,7 +1204,7 @@ func _1681110436_add_mnemonic_to_settings_sync_clock_tableUpSql() (*asset, error
return nil, err
}
- info := bindataFileInfo{name: "1681110436_add_mnemonic_to_settings_sync_clock_table.up.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1681777994, 0)}
+ info := bindataFileInfo{name: "1681110436_add_mnemonic_to_settings_sync_clock_table.up.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1682559310, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0x74, 0x81, 0x7d, 0x9e, 0x77, 0xb6, 0xfe, 0xe3, 0xcb, 0x48, 0xe5, 0x5f, 0x39, 0x23, 0xa1, 0x7d, 0x53, 0x22, 0xe8, 0x96, 0x15, 0x8a, 0x1e, 0x8e, 0xbc, 0xe2, 0x1d, 0xc4, 0xc2, 0x56, 0x34}}
return a, nil
}
@@ -1224,7 +1224,7 @@ func _1681392602_9d_sync_periodUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1681392602_9d_sync_period.up.sql", size: 60, mode: os.FileMode(0644), modTime: time.Unix(1681777994, 0)}
+ info := bindataFileInfo{name: "1681392602_9d_sync_period.up.sql", size: 60, mode: os.FileMode(0644), modTime: time.Unix(1682559310, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xa, 0x90, 0x29, 0x7f, 0x76, 0x98, 0xa7, 0x71, 0x80, 0x5a, 0x2f, 0xbe, 0x23, 0x9a, 0xd4, 0xf4, 0x39, 0x19, 0xd3, 0xa5, 0x34, 0x6e, 0x67, 0x6a, 0xbe, 0x8a, 0xad, 0x21, 0xc7, 0xba, 0x88}}
return a, nil
}
@@ -1244,7 +1244,7 @@ func _1681762078_default_sync_period_9dUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1681762078_default_sync_period_9d.up.sql", size: 3002, mode: os.FileMode(0644), modTime: time.Unix(1682429358, 0)}
+ info := bindataFileInfo{name: "1681762078_default_sync_period_9d.up.sql", size: 3002, mode: os.FileMode(0644), modTime: time.Unix(1682559310, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xd9, 0x26, 0xfc, 0xa9, 0x45, 0xc1, 0x81, 0xa8, 0xe2, 0x2c, 0xe9, 0x3c, 0xea, 0x1d, 0x37, 0x11, 0x45, 0x8c, 0x6c, 0xbc, 0xc2, 0x6, 0x69, 0x2, 0x75, 0x29, 0x40, 0x9f, 0xc5, 0xbb, 0x36}}
return a, nil
}
@@ -1264,7 +1264,7 @@ func _1681780680_add_clock_to_social_links_settingsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1681780680_add_clock_to_social_links_settings.up.sql", size: 137, mode: os.FileMode(0644), modTime: time.Unix(1682429358, 0)}
+ info := bindataFileInfo{name: "1681780680_add_clock_to_social_links_settings.up.sql", size: 137, mode: os.FileMode(0644), modTime: time.Unix(1682559310, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x63, 0x11, 0xf5, 0x41, 0xe5, 0x5a, 0xf4, 0xe3, 0xf3, 0x14, 0x87, 0x28, 0xd8, 0xf0, 0x52, 0x31, 0x8, 0xd5, 0xbb, 0xf4, 0xff, 0x55, 0x5f, 0x42, 0x90, 0xcb, 0xf7, 0x46, 0x2, 0x6, 0xbe, 0x42}}
return a, nil
}
@@ -1284,7 +1284,7 @@ func _1682073779_settings_table_remove_latest_derived_path_columnUpSql() (*asset
return nil, err
}
- info := bindataFileInfo{name: "1682073779_settings_table_remove_latest_derived_path_column.up.sql", size: 4470, mode: os.FileMode(0644), modTime: time.Unix(1682429358, 0)}
+ info := bindataFileInfo{name: "1682073779_settings_table_remove_latest_derived_path_column.up.sql", size: 4470, mode: os.FileMode(0644), modTime: time.Unix(1682559310, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7a, 0x36, 0x2, 0x41, 0xd, 0x5c, 0xd1, 0x92, 0x85, 0x6d, 0x84, 0xff, 0x67, 0xa7, 0x4c, 0x67, 0xa4, 0xef, 0x52, 0x69, 0x1f, 0x22, 0x25, 0x92, 0xc, 0xb3, 0x89, 0x50, 0x91, 0xc, 0x49, 0xf9}}
return a, nil
}
@@ -1304,7 +1304,7 @@ func _1682146075_add_created_at_to_saved_addressesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1682146075_add_created_at_to_saved_addresses.up.sql", size: 107, mode: os.FileMode(0644), modTime: time.Unix(1682429358, 0)}
+ info := bindataFileInfo{name: "1682146075_add_created_at_to_saved_addresses.up.sql", size: 107, mode: os.FileMode(0644), modTime: time.Unix(1682559310, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x88, 0xfe, 0x35, 0x9c, 0x6b, 0xdf, 0x67, 0x18, 0x16, 0xe4, 0xc9, 0xd4, 0x77, 0x7c, 0x4, 0xe2, 0x6c, 0x41, 0xd9, 0x53, 0x97, 0xfe, 0x5, 0xa3, 0x23, 0xce, 0x82, 0xad, 0x92, 0x5e, 0xd7, 0x7d}}
return a, nil
}
@@ -1324,7 +1324,7 @@ func _1682393575_sync_ens_nameUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1682393575_sync_ens_name.up.sql", size: 713, mode: os.FileMode(0644), modTime: time.Unix(1682560340, 0)}
+ info := bindataFileInfo{name: "1682393575_sync_ens_name.up.sql", size: 713, mode: os.FileMode(0644), modTime: time.Unix(1682559310, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfb, 0xea, 0xcb, 0x4d, 0x71, 0x5a, 0x49, 0x19, 0x8b, 0xef, 0x66, 0x27, 0x33, 0x89, 0xb0, 0xe, 0x37, 0x1b, 0x41, 0x8, 0x12, 0xcc, 0x56, 0xd8, 0x1b, 0xf, 0xf8, 0x50, 0x4b, 0x93, 0xf1, 0x29}}
return a, nil
}
@@ -1344,7 +1344,7 @@ func docGo() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x7c, 0x28, 0xcd, 0x47, 0xf2, 0xfa, 0x7c, 0x51, 0x2d, 0xd8, 0x38, 0xb, 0xb0, 0x34, 0x9d, 0x4c, 0x62, 0xa, 0x9e, 0x28, 0xc3, 0x31, 0x23, 0xd9, 0xbb, 0x89, 0x9f, 0xa0, 0x89, 0x1f, 0xe8}}
return a, nil
}
diff --git a/appdatabase/migrationsprevnodecfg/bindata.go b/appdatabase/migrationsprevnodecfg/bindata.go
index 812db0da677..a01bf7fc919 100644
--- a/appdatabase/migrationsprevnodecfg/bindata.go
+++ b/appdatabase/migrationsprevnodecfg/bindata.go
@@ -137,7 +137,7 @@ func _0001_appDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb5, 0x25, 0xa0, 0xf8, 0x7d, 0x2d, 0xd, 0xcf, 0x18, 0xe4, 0x73, 0xc3, 0x95, 0xf5, 0x24, 0x20, 0xa9, 0xe6, 0x9e, 0x1d, 0x93, 0xe5, 0xc5, 0xad, 0x93, 0x8f, 0x5e, 0x40, 0xb5, 0x30, 0xaa, 0x25}}
return a, nil
}
@@ -157,7 +157,7 @@ func _0001_appUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0x3a, 0xa7, 0xf2, 0x8f, 0xfa, 0x82, 0x7c, 0xc5, 0x49, 0xac, 0xac, 0xf, 0xc, 0x77, 0xe2, 0xba, 0xe8, 0x4d, 0xe, 0x6f, 0x5d, 0x2c, 0x2c, 0x18, 0x80, 0xc2, 0x1d, 0xe, 0x25, 0xe, 0x18}}
return a, nil
}
@@ -177,7 +177,7 @@ func _0002_tokensDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x31, 0x2, 0xcc, 0x2f, 0x38, 0x90, 0xf7, 0x58, 0x37, 0x47, 0xf4, 0x18, 0xf7, 0x72, 0x74, 0x67, 0x14, 0x7e, 0xf3, 0xb1, 0xd6, 0x5f, 0xb0, 0xd5, 0xe7, 0x91, 0xf4, 0x26, 0x77, 0x8e, 0x68}}
return a, nil
}
@@ -197,7 +197,7 @@ func _0002_tokensUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcc, 0xd6, 0xde, 0xd3, 0x7b, 0xee, 0x92, 0x11, 0x38, 0xa4, 0xeb, 0x84, 0xca, 0xcb, 0x37, 0x75, 0x5, 0x77, 0x7f, 0x14, 0x39, 0xee, 0xa1, 0x8b, 0xd4, 0x5c, 0x6e, 0x55, 0x6, 0x50, 0x16, 0xd4}}
return a, nil
}
@@ -217,7 +217,7 @@ func _0003_settingsDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xa6, 0xf5, 0xc0, 0x60, 0x64, 0x77, 0xe2, 0xe7, 0x3c, 0x9b, 0xb1, 0x52, 0xa9, 0x95, 0x16, 0xf8, 0x60, 0x2f, 0xa5, 0xeb, 0x46, 0xb9, 0xb9, 0x8f, 0x4c, 0xf4, 0xfd, 0xbb, 0xe7, 0xe5, 0xe5}}
return a, nil
}
@@ -237,7 +237,7 @@ func _0003_settingsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x35, 0x0, 0xeb, 0xe2, 0x33, 0x68, 0xb9, 0xf4, 0xf6, 0x8e, 0x9e, 0x10, 0xe9, 0x58, 0x68, 0x28, 0xb, 0xcd, 0xec, 0x74, 0x71, 0xa7, 0x9a, 0x5a, 0x77, 0x59, 0xb1, 0x13, 0x1c, 0xa1, 0x5b}}
return a, nil
}
@@ -257,7 +257,7 @@ func _0004_pending_stickersDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
return a, nil
}
@@ -277,7 +277,7 @@ func _0004_pending_stickersUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0xed, 0x25, 0xdf, 0x75, 0x2, 0x6c, 0xf0, 0xa2, 0xa8, 0x37, 0x62, 0x65, 0xad, 0xfd, 0x98, 0xa0, 0x9d, 0x63, 0x94, 0xdf, 0x6b, 0x46, 0xe0, 0x68, 0xec, 0x9c, 0x7f, 0x77, 0xdd, 0xb3, 0x6}}
return a, nil
}
@@ -297,7 +297,7 @@ func _0005_waku_modeDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
return a, nil
}
@@ -317,7 +317,7 @@ func _0005_waku_modeUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa6, 0x91, 0xc, 0xd7, 0x89, 0x61, 0x2e, 0x4c, 0x5a, 0xb6, 0x67, 0xd1, 0xc1, 0x42, 0x24, 0x38, 0xd6, 0x1b, 0x75, 0x41, 0x9c, 0x23, 0xb0, 0xca, 0x5c, 0xf1, 0x5c, 0xd0, 0x13, 0x92, 0x3e, 0xe1}}
return a, nil
}
@@ -337,7 +337,7 @@ func _0006_appearanceUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0x6, 0x25, 0x6c, 0xe4, 0x9d, 0xa7, 0x72, 0xe8, 0xbc, 0xe4, 0x1f, 0x1e, 0x2d, 0x7c, 0xb7, 0xf6, 0xa3, 0xec, 0x3b, 0x4e, 0x93, 0x2e, 0xa4, 0xec, 0x6f, 0xe5, 0x95, 0x94, 0xe8, 0x4, 0xfb}}
return a, nil
}
@@ -357,7 +357,7 @@ func _0007_enable_waku_defaultUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd4, 0x42, 0xb6, 0xe5, 0x48, 0x41, 0xeb, 0xc0, 0x7e, 0x3b, 0xe6, 0x8e, 0x96, 0x33, 0x20, 0x92, 0x24, 0x5a, 0x60, 0xfa, 0xa0, 0x3, 0x5e, 0x76, 0x4b, 0x89, 0xaa, 0x37, 0x66, 0xbc, 0x26, 0x11}}
return a, nil
}
@@ -377,7 +377,7 @@ func _0008_add_push_notificationsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5a, 0x0, 0xbf, 0xd0, 0xdd, 0xcd, 0x73, 0xe0, 0x7c, 0x56, 0xef, 0xdc, 0x57, 0x61, 0x94, 0x64, 0x70, 0xb9, 0xfa, 0xa1, 0x2a, 0x36, 0xc, 0x2f, 0xf8, 0x95, 0xa, 0x57, 0x3e, 0x7a, 0xd7, 0x12}}
return a, nil
}
@@ -397,7 +397,7 @@ func _0009_enable_sending_push_notificationsDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xae, 0x1b, 0x41, 0xcb, 0x9c, 0x2c, 0x93, 0xc6, 0x2a, 0x77, 0x3, 0xb9, 0x51, 0xe0, 0x68, 0x68, 0x0, 0xf7, 0x5b, 0xb3, 0x1e, 0x94, 0x44, 0xba, 0x9c, 0xd0, 0x3b, 0x80, 0x21, 0x6f, 0xb5}}
return a, nil
}
@@ -417,7 +417,7 @@ func _0009_enable_sending_push_notificationsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x80, 0xe4, 0x9c, 0xc8, 0xb8, 0xd5, 0xef, 0xce, 0x74, 0x9b, 0x7b, 0xdd, 0xa, 0x99, 0x1e, 0xef, 0x7f, 0xb8, 0x99, 0x84, 0x4, 0x0, 0x6b, 0x1d, 0x2c, 0xa, 0xf8, 0x2c, 0x4f, 0xb5, 0x44}}
return a, nil
}
@@ -437,7 +437,7 @@ func _0010_add_block_mentionsDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0x9e, 0x27, 0x1e, 0xba, 0x9f, 0xca, 0xae, 0x98, 0x2e, 0x6e, 0xe3, 0xdd, 0xac, 0x73, 0x34, 0x4e, 0x69, 0x92, 0xb5, 0xf6, 0x9, 0xab, 0x50, 0x35, 0xd, 0xee, 0xeb, 0x3e, 0xcc, 0x7e, 0xce}}
return a, nil
}
@@ -457,7 +457,7 @@ func _0010_add_block_mentionsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x23, 0x85, 0xa2, 0xb5, 0xb6, 0xb4, 0x3f, 0xdc, 0x4e, 0xff, 0xe2, 0x6b, 0x66, 0x68, 0x5e, 0xb2, 0xb4, 0x14, 0xb2, 0x1b, 0x4d, 0xb1, 0xce, 0xf7, 0x6, 0x58, 0xa7, 0xaf, 0x93, 0x3f, 0x25}}
return a, nil
}
@@ -477,7 +477,7 @@ func _0011_allow_webview_permission_requestsDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
return a, nil
}
@@ -497,7 +497,7 @@ func _0011_allow_webview_permission_requestsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x43, 0x5f, 0x22, 0x4c, 0x98, 0x1d, 0xc6, 0xf4, 0x89, 0xaf, 0xf4, 0x44, 0xba, 0xf8, 0x28, 0xa7, 0xb5, 0xb9, 0xf0, 0xf2, 0xcb, 0x5, 0x59, 0x7a, 0xc, 0xdf, 0xd3, 0x38, 0xa4, 0xb8, 0x98, 0xc2}}
return a, nil
}
@@ -517,7 +517,7 @@ func _0012_pending_transactionsDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0x41, 0xfe, 0x5c, 0xd8, 0xc3, 0x29, 0xfd, 0x31, 0x78, 0x99, 0x7a, 0xeb, 0x17, 0x62, 0x88, 0x41, 0xb3, 0xe7, 0xb5, 0x5, 0x0, 0x90, 0xa1, 0x7, 0x1a, 0x23, 0x88, 0x81, 0xba, 0x56, 0x9d}}
return a, nil
}
@@ -537,7 +537,7 @@ func _0012_pending_transactionsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd, 0x17, 0xff, 0xd7, 0xa7, 0x49, 0x1e, 0x7b, 0x34, 0x63, 0x7c, 0x53, 0xaa, 0x6b, 0x2d, 0xc8, 0xe0, 0x82, 0x21, 0x90, 0x3a, 0x94, 0xf1, 0xa6, 0xe4, 0x70, 0xe5, 0x85, 0x1a, 0x48, 0x25, 0xb}}
return a, nil
}
@@ -557,7 +557,7 @@ func _0013_favouritesDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf8, 0x55, 0x13, 0x4f, 0x4a, 0x19, 0x83, 0x9c, 0xda, 0x34, 0xb8, 0x3, 0x54, 0x82, 0x1e, 0x99, 0x36, 0x6b, 0x42, 0x3, 0xf6, 0x43, 0xde, 0xe6, 0x32, 0xb6, 0xdf, 0xe2, 0x59, 0x8c, 0x84}}
return a, nil
}
@@ -577,7 +577,7 @@ func _0013_favouritesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbe, 0x1, 0x27, 0x38, 0x76, 0xf5, 0xcb, 0x61, 0xda, 0x5b, 0xce, 0xd9, 0x8b, 0x18, 0x77, 0x61, 0x84, 0xe7, 0x22, 0xe2, 0x13, 0x99, 0xab, 0x32, 0xbc, 0xbe, 0xed, 0x1f, 0x2f, 0xb0, 0xe4, 0x8d}}
return a, nil
}
@@ -597,7 +597,7 @@ func _0014_add_use_mailserversDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
return a, nil
}
@@ -617,7 +617,7 @@ func _0014_add_use_mailserversUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xba, 0x65, 0xbf, 0x1b, 0xc9, 0x6d, 0x45, 0xf2, 0xf5, 0x30, 0x7c, 0xc1, 0xde, 0xb8, 0xe3, 0x3f, 0xa9, 0x2f, 0x9f, 0xea, 0x1, 0x29, 0x29, 0x65, 0xe7, 0x38, 0xab, 0xa4, 0x62, 0xf, 0xd0}}
return a, nil
}
@@ -637,7 +637,7 @@ func _0015_link_previewsDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
return a, nil
}
@@ -657,7 +657,7 @@ func _0015_link_previewsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb1, 0xf7, 0x38, 0x25, 0xa6, 0xfc, 0x6b, 0x9, 0xe4, 0xd9, 0xbf, 0x58, 0x7b, 0x80, 0xd8, 0x48, 0x63, 0xde, 0xa5, 0x5e, 0x30, 0xa3, 0xeb, 0x68, 0x8e, 0x6a, 0x9f, 0xfd, 0xf4, 0x46, 0x41, 0x34}}
return a, nil
}
@@ -677,7 +677,7 @@ func _0016_local_notifications_preferencesDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe0, 0x50, 0xc7, 0xdd, 0x53, 0x9c, 0x5d, 0x1e, 0xb5, 0x71, 0x25, 0x50, 0x58, 0xcf, 0x6d, 0xbe, 0x5a, 0x8, 0x12, 0xc9, 0x13, 0xd, 0x9a, 0x3d, 0x4b, 0x7a, 0x2f, 0x1b, 0xe5, 0x23, 0x52, 0x78}}
return a, nil
}
@@ -697,7 +697,7 @@ func _0016_local_notifications_preferencesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x3a, 0x16, 0x25, 0xdf, 0xba, 0x62, 0xd3, 0x81, 0x73, 0xc, 0x10, 0x85, 0xbc, 0x8d, 0xe, 0x1d, 0x62, 0xcb, 0xb, 0x6d, 0x8c, 0x4f, 0x63, 0x5f, 0xe2, 0xd, 0xc5, 0x46, 0xa8, 0x35, 0x5b}}
return a, nil
}
@@ -717,7 +717,7 @@ func _0017_bookmarksDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9a, 0x13, 0x2a, 0x44, 0xb0, 0x3, 0x18, 0x63, 0xb8, 0x33, 0xda, 0x3a, 0xeb, 0xb8, 0xcb, 0xd1, 0x98, 0x29, 0xa7, 0xf0, 0x6, 0x9d, 0xc9, 0x62, 0xe7, 0x89, 0x7f, 0x77, 0xaf, 0xec, 0x6b, 0x8f}}
return a, nil
}
@@ -737,7 +737,7 @@ func _0017_bookmarksUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbc, 0x47, 0xe1, 0xe3, 0xd8, 0xc6, 0x4, 0x6d, 0x5f, 0x2f, 0xa, 0x51, 0xa6, 0x8c, 0x6a, 0xe0, 0x3d, 0x8c, 0x91, 0x47, 0xbc, 0x1, 0x75, 0x46, 0x92, 0x2, 0x18, 0x6e, 0xe3, 0x4f, 0x18, 0x57}}
return a, nil
}
@@ -757,7 +757,7 @@ func _0018_profile_pictures_visibilityUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xe3, 0xc5, 0xec, 0x83, 0x55, 0x45, 0x57, 0x7a, 0xaa, 0xd2, 0xa7, 0x59, 0xa7, 0x87, 0xef, 0x63, 0x19, 0x9c, 0x46, 0x9c, 0xc5, 0x32, 0x89, 0xa4, 0x68, 0x70, 0xd8, 0x83, 0x43, 0xa4, 0x72}}
return a, nil
}
@@ -777,7 +777,7 @@ func _0019_blocks_ranges_extra_dataUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0x96, 0x32, 0x58, 0xf0, 0xb9, 0xe1, 0x70, 0x81, 0xca, 0x8d, 0x45, 0x57, 0x8a, 0x7, 0x5d, 0x9e, 0x2a, 0x30, 0xb, 0xad, 0x5f, 0xf8, 0xd4, 0x30, 0x94, 0x73, 0x37, 0x8d, 0xc1, 0x9a, 0xed}}
return a, nil
}
@@ -797,7 +797,7 @@ func _0020_metricsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe8, 0x32, 0xbc, 0xb6, 0x9b, 0x5a, 0x8f, 0x9f, 0x4c, 0x90, 0x81, 0x3e, 0x2e, 0xd1, 0x23, 0xcd, 0xf1, 0x83, 0x35, 0xca, 0x66, 0x87, 0x52, 0x4e, 0x30, 0x3e, 0x4f, 0xa8, 0xfd, 0x30, 0x16, 0xbd}}
return a, nil
}
@@ -817,7 +817,7 @@ func _0021_add_session_id_to_metricsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x81, 0xfc, 0x97, 0xd1, 0x8b, 0xea, 0x8e, 0xd7, 0xc2, 0x53, 0x62, 0xe9, 0xbc, 0xf, 0x8c, 0x46, 0x41, 0x41, 0xb7, 0x6, 0x35, 0xf5, 0xba, 0xbb, 0x28, 0x50, 0x48, 0xbf, 0x36, 0x90, 0x5c}}
return a, nil
}
@@ -837,7 +837,7 @@ func _0022_pending_transfersUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6a, 0x9, 0xe6, 0x6, 0xae, 0x60, 0xdd, 0xbb, 0x76, 0xac, 0xe0, 0x57, 0x30, 0x67, 0x37, 0x93, 0x40, 0x13, 0xec, 0xf2, 0x6e, 0x61, 0xa, 0x14, 0xb2, 0xb1, 0xbd, 0x91, 0xf8, 0x89, 0xb3, 0xe3}}
return a, nil
}
@@ -857,7 +857,7 @@ func _1618237885_settings_anon_metrics_should_sendUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x6c, 0x1d, 0x1f, 0x54, 0x62, 0x18, 0x22, 0x5c, 0xa7, 0x8c, 0x59, 0x24, 0xd3, 0x4d, 0x55, 0xc4, 0x2a, 0x9e, 0x4c, 0x37, 0x6b, 0xfd, 0xac, 0xec, 0xb7, 0x68, 0x21, 0x26, 0x26, 0xf3, 0x92}}
return a, nil
}
@@ -877,7 +877,7 @@ func _1618395756_contacts_onlyUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0xe3, 0xd0, 0xe7, 0xf2, 0x6e, 0xbf, 0x27, 0xf6, 0xe2, 0x2e, 0x16, 0x4b, 0x52, 0x3b, 0xcf, 0x63, 0x52, 0xfc, 0x1d, 0x43, 0xba, 0x42, 0xf9, 0x1e, 0x1e, 0x39, 0x40, 0xed, 0x0, 0x20, 0xa8}}
return a, nil
}
@@ -897,7 +897,7 @@ func _1622184614_add_default_sync_periodUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0x39, 0xeb, 0x8f, 0xdc, 0x1, 0x56, 0xc1, 0x9b, 0xaa, 0xda, 0x44, 0xe0, 0xdb, 0xda, 0x2c, 0xe7, 0x71, 0x8d, 0xbc, 0xc1, 0x9a, 0x4f, 0x48, 0xe0, 0x5e, 0x81, 0x1e, 0x8e, 0x6a, 0x4d, 0x3}}
return a, nil
}
@@ -917,7 +917,7 @@ func _1625872445_user_statusUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xa, 0xfe, 0x7a, 0xcc, 0x9e, 0x35, 0x26, 0xb, 0xc8, 0xf2, 0x7d, 0xfa, 0x4b, 0xcf, 0x53, 0x20, 0x76, 0xc7, 0xd, 0xbc, 0x78, 0x4f, 0x74, 0x2d, 0x2e, 0x2e, 0x7e, 0x62, 0xae, 0x78, 0x1f}}
return a, nil
}
@@ -937,7 +937,7 @@ func _1627983977_add_gif_to_settingsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x63, 0xe6, 0xe1, 0x97, 0x64, 0x4c, 0xe2, 0x14, 0xb1, 0x96, 0x3a, 0xb0, 0xb9, 0xb7, 0xb5, 0x78, 0x4a, 0x39, 0x69, 0x89, 0xb7, 0x89, 0x19, 0xb8, 0x89, 0x1, 0xc5, 0xc2, 0x85, 0x53, 0xe2, 0x83}}
return a, nil
}
@@ -957,7 +957,7 @@ func _1628580203_add_hidden_accountUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x30, 0xf1, 0xd4, 0x60, 0xe2, 0x28, 0x14, 0xcb, 0x16, 0xb, 0x9, 0xea, 0x17, 0xa, 0x9e, 0x89, 0xa8, 0x32, 0x32, 0xf8, 0x4d, 0xa0, 0xe1, 0xe5, 0x79, 0xbd, 0x7d, 0x79, 0xe9, 0x4c, 0x9e}}
return a, nil
}
@@ -977,7 +977,7 @@ func _1629123384_add_id_to_app_metricsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdf, 0x66, 0xc0, 0x69, 0xb, 0xad, 0x49, 0x7c, 0x8c, 0x67, 0xb8, 0xd6, 0x8d, 0x5d, 0x86, 0x1f, 0xa4, 0x53, 0xf5, 0x8, 0x1, 0xfd, 0x38, 0x49, 0xee, 0x84, 0xc0, 0xd8, 0x17, 0x72, 0x3, 0xb3}}
return a, nil
}
@@ -997,7 +997,7 @@ func _1630401853_add_opensea_enabled_to_settingsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0x91, 0x86, 0x15, 0xc8, 0x99, 0xe3, 0xae, 0xa, 0x6e, 0x94, 0x48, 0x51, 0x5b, 0x18, 0xe0, 0xbc, 0xaf, 0x34, 0x75, 0x55, 0x61, 0xd4, 0xc1, 0x85, 0xc7, 0x3d, 0x99, 0x9e, 0x1f, 0x37, 0x56}}
return a, nil
}
@@ -1017,7 +1017,7 @@ func _1630464455_createSaved_addressesTableDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0x52, 0x39, 0xb5, 0x42, 0xac, 0xcb, 0xa1, 0x44, 0xb7, 0x94, 0x26, 0x24, 0xb2, 0x12, 0xc, 0xc5, 0xbf, 0x63, 0x13, 0x6f, 0x3c, 0x4, 0x7b, 0xf0, 0xd, 0xfa, 0x55, 0x9e, 0x51, 0xf9, 0x7a}}
return a, nil
}
@@ -1037,7 +1037,7 @@ func _1630464455_createSaved_addressesTableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf, 0x56, 0x18, 0xeb, 0x4e, 0xac, 0xd8, 0xd6, 0x91, 0xae, 0x83, 0xcf, 0x91, 0x9e, 0x4, 0x4b, 0x2, 0x1f, 0x6d, 0xba, 0xf6, 0x3, 0xf2, 0x98, 0x72, 0xf6, 0x91, 0x29, 0x96, 0x0, 0x35}}
return a, nil
}
@@ -1057,7 +1057,7 @@ func _1630485153_networksDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbb, 0x3e, 0x57, 0xb7, 0xf7, 0x8, 0xbd, 0xb5, 0xc2, 0xea, 0xc, 0x45, 0xb7, 0x7, 0x9, 0xca, 0xe7, 0x48, 0x7e, 0x56, 0x4e, 0x44, 0x78, 0x8e, 0xe3, 0x87, 0x63, 0xaf, 0x16, 0x3f, 0xf9, 0x71}}
return a, nil
}
@@ -1077,7 +1077,7 @@ func _1630485153_networksUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0x9, 0x1d, 0x3, 0x86, 0xbd, 0xc5, 0xde, 0x3c, 0x1b, 0x40, 0x41, 0x7c, 0x61, 0x8, 0x80, 0x53, 0x87, 0x1b, 0x5a, 0x56, 0xd, 0x88, 0x1d, 0x60, 0x24, 0xce, 0x7b, 0x8f, 0xff, 0xaf, 0x36}}
return a, nil
}
@@ -1097,7 +1097,7 @@ func _1632262444_profile_pictures_show_toUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc3, 0xa2, 0x5a, 0x94, 0xde, 0x86, 0x2a, 0x29, 0xf5, 0xb3, 0x36, 0xe7, 0x53, 0x81, 0x55, 0xc9, 0xb5, 0xc3, 0xf4, 0x8c, 0x65, 0x2c, 0x4c, 0x48, 0xfd, 0x3c, 0xb7, 0x14, 0xb4, 0xea, 0x7a, 0x13}}
return a, nil
}
@@ -1117,7 +1117,7 @@ func _1635942153_add_telemetry_server_url_to_settingsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6e, 0x9b, 0x1d, 0x39, 0x9c, 0x8d, 0x50, 0x86, 0xdf, 0xe5, 0x81, 0x55, 0xdc, 0x31, 0xcd, 0xb7, 0xc7, 0x5a, 0x67, 0x3b, 0x21, 0x99, 0xa5, 0x74, 0xb8, 0xd3, 0x58, 0xae, 0x29, 0x68, 0x2a, 0x8d}}
return a, nil
}
@@ -1137,7 +1137,7 @@ func _1635942154_add_backup_settingUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0xe7, 0xfb, 0x70, 0x80, 0x5, 0xb4, 0x7b, 0x67, 0x8, 0x6e, 0x5f, 0x45, 0x17, 0xd9, 0x5f, 0x18, 0x66, 0x2f, 0x8a, 0x4f, 0xd4, 0x15, 0xe5, 0x2b, 0xbb, 0x25, 0x7a, 0x30, 0xad, 0x4c, 0x1a}}
return a, nil
}
@@ -1157,7 +1157,7 @@ func _1637745568_add_auto_message_settingUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0xd8, 0xd2, 0xc2, 0x3a, 0xd7, 0xf1, 0x96, 0x6a, 0x35, 0xe5, 0x5c, 0xb9, 0xed, 0x4b, 0xf2, 0x5f, 0x80, 0x43, 0xca, 0x40, 0x57, 0x7e, 0xd7, 0x41, 0x9f, 0x70, 0x9f, 0xaf, 0x2a, 0xfc, 0x8f}}
return a, nil
}
@@ -1177,7 +1177,7 @@ func _1640111208_nodeconfigUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0x5a, 0xc6, 0xed, 0x6, 0xcb, 0x51, 0x8b, 0x78, 0xe9, 0x10, 0x37, 0xd1, 0xad, 0x9b, 0x76, 0x9a, 0xb9, 0x72, 0x85, 0xe7, 0x8a, 0x7f, 0xf0, 0x81, 0xf8, 0x33, 0x59, 0x67, 0x8e, 0xeb, 0xb1}}
return a, nil
}
@@ -1197,7 +1197,7 @@ func docGo() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xd2, 0xea, 0xc5, 0xd, 0xc4, 0x7f, 0x95, 0x8e, 0xd5, 0xf5, 0x96, 0xf2, 0x1b, 0xcb, 0xc7, 0xc2, 0x46, 0x1, 0x78, 0x1d, 0x5d, 0x59, 0x19, 0x99, 0xdd, 0x5b, 0xf5, 0x63, 0xa5, 0x25, 0xb8}}
return a, nil
}
diff --git a/exchanges/exchanges_test.go b/exchanges/exchanges_test.go
index d2f48475042..269364065f0 100644
--- a/exchanges/exchanges_test.go
+++ b/exchanges/exchanges_test.go
@@ -3,8 +3,9 @@ package exchanges
import (
"testing"
- "github.com/ethereum/go-ethereum/common"
"github.com/stretchr/testify/require"
+
+ "github.com/ethereum/go-ethereum/common"
)
func TestNullAddress(t *testing.T) {
diff --git a/go.mod b/go.mod
index 2f3806b4d59..fa9f92d19cd 100644
--- a/go.mod
+++ b/go.mod
@@ -65,7 +65,7 @@ require (
go.uber.org/zap v1.24.0
golang.org/x/crypto v0.4.0
golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb
- google.golang.org/protobuf v1.28.1
+ google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
gopkg.in/go-playground/validator.v9 v9.31.0
gopkg.in/natefinch/lumberjack.v2 v2.0.0
@@ -85,6 +85,7 @@ require (
github.com/yeqown/go-qrcode/v2 v2.2.1
github.com/yeqown/go-qrcode/writer/standard v1.2.1
go.uber.org/multierr v1.8.0
+ golang.org/x/net v0.8.0
)
require (
@@ -259,7 +260,6 @@ require (
go.uber.org/fx v1.18.2 // indirect
golang.org/x/exp v0.0.0-20230206171751-46f607a40771 // indirect
golang.org/x/mod v0.8.0 // indirect
- golang.org/x/net v0.8.0 // indirect
golang.org/x/sync v0.1.0 // indirect
golang.org/x/sys v0.6.0 // indirect
golang.org/x/term v0.6.0 // indirect
diff --git a/images/encode_test.go b/images/encode_test.go
index 9d522a5817d..51f374e54f5 100644
--- a/images/encode_test.go
+++ b/images/encode_test.go
@@ -100,3 +100,13 @@ func TestCompressToFileLimits(t *testing.T) {
require.NoError(t, err)
require.Equal(t, 291645, bb.Len())
}
+
+func TestGetPayloadFromURI(t *testing.T) {
+ payload, err := GetPayloadFromURI("data:image/jpeg;base64,/9j/2wCEAFA3PEY8MlA=")
+ require.NoError(t, err)
+ require.Equal(
+ t,
+ []byte{0xff, 0xd8, 0xff, 0xdb, 0x0, 0x84, 0x0, 0x50, 0x37, 0x3c, 0x46, 0x3c, 0x32, 0x50},
+ payload,
+ )
+}
diff --git a/mailserver/migrations/bindata.go b/mailserver/migrations/bindata.go
index 89f64da4d3a..abad95bec26 100644
--- a/mailserver/migrations/bindata.go
+++ b/mailserver/migrations/bindata.go
@@ -86,7 +86,7 @@ func _1557732988_initialize_dbDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1557732988_initialize_db.down.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1557732988_initialize_db.down.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x40, 0x78, 0xb7, 0x71, 0x3c, 0x20, 0x3b, 0xc9, 0xb, 0x2f, 0x49, 0xe4, 0xff, 0x1c, 0x84, 0x54, 0xa1, 0x30, 0xe3, 0x90, 0xf8, 0x73, 0xda, 0xb0, 0x2a, 0xea, 0x8e, 0xf1, 0x82, 0xe7, 0xd2}}
return a, nil
}
@@ -106,7 +106,7 @@ func _1557732988_initialize_dbUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1557732988_initialize_db.up.sql", size: 278, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1557732988_initialize_db.up.sql", size: 278, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x85, 0x41, 0x7a, 0xba, 0x4f, 0xa3, 0x43, 0xc0, 0x63, 0xfa, 0x2c, 0xd1, 0xc5, 0xbb, 0x20, 0xa0, 0x64, 0xa8, 0x3b, 0x65, 0x82, 0xa2, 0x14, 0x28, 0x18, 0x7c, 0x8b, 0x3a, 0x7a, 0xfd, 0xe0}}
return a, nil
}
@@ -126,7 +126,7 @@ func staticGo() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "static.go", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "static.go", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0x8a, 0xf4, 0x27, 0x24, 0x9d, 0x2a, 0x1, 0x7b, 0x54, 0xea, 0xae, 0x4a, 0x35, 0x40, 0x92, 0xb5, 0xf9, 0xb3, 0x54, 0x3e, 0x3a, 0x1a, 0x2b, 0xae, 0xfb, 0x9e, 0x82, 0xeb, 0x4c, 0xf, 0x6}}
return a, nil
}
diff --git a/multiaccounts/migrations/bindata.go b/multiaccounts/migrations/bindata.go
index 33d57f56f9c..57d1df1b0e7 100644
--- a/multiaccounts/migrations/bindata.go
+++ b/multiaccounts/migrations/bindata.go
@@ -95,7 +95,7 @@ func _0001_accountsDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0001_accounts.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "0001_accounts.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0x61, 0x4c, 0x18, 0xfc, 0xc, 0xdf, 0x5c, 0x1f, 0x5e, 0xd3, 0xbd, 0xfa, 0x12, 0x5e, 0x8d, 0x8d, 0x8b, 0xb9, 0x5f, 0x99, 0x46, 0x63, 0xa5, 0xe3, 0xa6, 0x8a, 0x4, 0xf1, 0x73, 0x8a, 0xe9}}
return a, nil
}
@@ -115,7 +115,7 @@ func _0001_accountsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "0001_accounts.up.sql", size: 163, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "0001_accounts.up.sql", size: 163, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf2, 0xfa, 0x99, 0x8e, 0x96, 0xb3, 0x13, 0x6c, 0x1f, 0x6, 0x27, 0xc5, 0xd2, 0xd4, 0xe0, 0xa5, 0x26, 0x82, 0xa7, 0x26, 0xf2, 0x68, 0x9d, 0xed, 0x9c, 0x3d, 0xbb, 0xdc, 0x37, 0x28, 0xbc, 0x1}}
return a, nil
}
@@ -135,7 +135,7 @@ func _1605007189_identity_imagesDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1605007189_identity_images.down.sql", size: 29, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1605007189_identity_images.down.sql", size: 29, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2f, 0xcf, 0xa7, 0xae, 0xd5, 0x4f, 0xcd, 0x14, 0x63, 0x9, 0xbe, 0x39, 0x49, 0x18, 0x96, 0xb2, 0xa3, 0x8, 0x7d, 0x41, 0xdb, 0x50, 0x5d, 0xf5, 0x4d, 0xa2, 0xd, 0x8f, 0x57, 0x79, 0x77, 0x67}}
return a, nil
}
@@ -155,7 +155,7 @@ func _1605007189_identity_imagesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1605007189_identity_images.up.sql", size: 268, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1605007189_identity_images.up.sql", size: 268, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x50, 0xb6, 0xc1, 0x5c, 0x76, 0x72, 0x6b, 0x22, 0x34, 0xdc, 0x96, 0xdc, 0x2b, 0xfd, 0x2d, 0xbe, 0xcc, 0x1e, 0xd4, 0x5, 0x93, 0xd, 0xc2, 0x51, 0xf3, 0x1a, 0xef, 0x2b, 0x26, 0xa4, 0xeb, 0x65}}
return a, nil
}
@@ -175,7 +175,7 @@ func _1606224181_drop_photo_path_from_accountsDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.down.sql", size: 892, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.down.sql", size: 892, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x90, 0x24, 0x17, 0x7, 0x80, 0x93, 0x6f, 0x8d, 0x5d, 0xaa, 0x8c, 0x79, 0x15, 0x5d, 0xb3, 0x19, 0xd7, 0xd8, 0x39, 0xf9, 0x3a, 0x63, 0x8f, 0x81, 0x15, 0xb6, 0xd6, 0x9a, 0x37, 0xa8, 0x8e, 0x9b}}
return a, nil
}
@@ -195,7 +195,7 @@ func _1606224181_drop_photo_path_from_accountsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.up.sql", size: 866, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.up.sql", size: 866, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xff, 0x4c, 0x97, 0xee, 0xef, 0x82, 0xb8, 0x6c, 0x71, 0xbb, 0x50, 0x7b, 0xe6, 0xd9, 0x22, 0x31, 0x7c, 0x1a, 0xfe, 0x91, 0x28, 0xf6, 0x6, 0x36, 0xe, 0xb1, 0xf1, 0xc8, 0x25, 0xac, 0x7e, 0xd6}}
return a, nil
}
@@ -215,7 +215,7 @@ func _1648646095_image_clockDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1648646095_image_clock.down.sql", size: 939, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1648646095_image_clock.down.sql", size: 939, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4d, 0xa8, 0x1f, 0xf, 0xe0, 0xd7, 0xc9, 0x68, 0x98, 0xd8, 0x37, 0xb8, 0xba, 0x9e, 0xb2, 0x19, 0xf3, 0xc4, 0x73, 0x80, 0x3, 0x17, 0x2a, 0x53, 0x68, 0x10, 0x13, 0x54, 0x99, 0xb1, 0xf5, 0x1c}}
return a, nil
}
@@ -235,7 +235,7 @@ func _1648646095_image_clockUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1648646095_image_clock.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1648646095_image_clock.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x98, 0xa6, 0xa4, 0x4e, 0x4e, 0xca, 0x17, 0x56, 0xea, 0xfb, 0xf0, 0xa9, 0x81, 0x95, 0xe, 0x80, 0x52, 0x1, 0x47, 0x9b, 0xde, 0x14, 0xfa, 0x72, 0xc9, 0x62, 0x6f, 0x24, 0xa2, 0xc, 0x32, 0x50}}
return a, nil
}
@@ -255,7 +255,7 @@ func _1649317600_add_color_hashUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1649317600_add_color_hash.up.sql", size: 201, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1649317600_add_color_hash.up.sql", size: 201, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0xf, 0x37, 0x6d, 0xcf, 0x99, 0xc9, 0x2e, 0xdc, 0x70, 0x11, 0xb4, 0x36, 0x26, 0x4f, 0x39, 0xa8, 0x44, 0xf, 0xcb, 0xcc, 0x81, 0x74, 0x7a, 0x88, 0xaa, 0x54, 0x8c, 0xc4, 0xe, 0x56, 0x4f}}
return a, nil
}
@@ -275,7 +275,7 @@ func _1660238799_accounts_kdfUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1660238799_accounts_kdf.up.sql", size: 115, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1660238799_accounts_kdf.up.sql", size: 115, mode: os.FileMode(0644), modTime: time.Unix(1664889752, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdf, 0xe6, 0x7a, 0x69, 0x25, 0x42, 0x3b, 0x9c, 0x20, 0xf5, 0xcb, 0xae, 0xb0, 0xb3, 0x1b, 0x66, 0xc2, 0x5d, 0xd0, 0xc1, 0x59, 0xe8, 0xa9, 0xc5, 0x69, 0x58, 0x8f, 0xae, 0xe6, 0xd1, 0x4c, 0x53}}
return a, nil
}
@@ -295,7 +295,7 @@ func _1679505708_add_customization_colorUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1679505708_add_customization_color.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1679901265, 0)}
+ info := bindataFileInfo{name: "1679505708_add_customization_color.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1680025955, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0xe1, 0x3d, 0xaa, 0x5d, 0x35, 0x87, 0x8a, 0x8b, 0xe9, 0x4a, 0xa6, 0x7b, 0x85, 0xbc, 0x33, 0x11, 0xc7, 0x7d, 0x61, 0xac, 0x65, 0x59, 0xda, 0x32, 0x59, 0x68, 0x9d, 0xa1, 0x10, 0x7b, 0xa9}}
return a, nil
}
@@ -315,7 +315,7 @@ func docGo() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x7c, 0x28, 0xcd, 0x47, 0xf2, 0xfa, 0x7c, 0x51, 0x2d, 0xd8, 0x38, 0xb, 0xb0, 0x34, 0x9d, 0x4c, 0x62, 0xa, 0x9e, 0x28, 0xc3, 0x31, 0x23, 0xd9, 0xbb, 0x89, 0x9f, 0xa0, 0x89, 0x1f, 0xe8}}
return a, nil
}
diff --git a/protocol/anonmetrics/migrations/migrations.go b/protocol/anonmetrics/migrations/migrations.go
index 57d8cf8a8de..85cf4b67d67 100644
--- a/protocol/anonmetrics/migrations/migrations.go
+++ b/protocol/anonmetrics/migrations/migrations.go
@@ -86,7 +86,7 @@ func _1619446565_postgres_make_anon_metrics_tableDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x75, 0xea, 0x1, 0x74, 0xe6, 0xa3, 0x11, 0xd0, 0x86, 0x87, 0x7e, 0x31, 0xb4, 0x1a, 0x27, 0x5d, 0xda, 0x77, 0xa3, 0xf5, 0x1d, 0x88, 0x79, 0xcf, 0xd5, 0x95, 0x75, 0xd, 0x47, 0xa1, 0x90, 0x5}}
return a, nil
}
@@ -106,7 +106,7 @@ func _1619446565_postgres_make_anon_metrics_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.up.sql", size: 443, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.up.sql", size: 443, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0xdc, 0x72, 0x28, 0x3c, 0xf6, 0x94, 0xb0, 0x47, 0x3d, 0xca, 0x55, 0x3d, 0xf7, 0x83, 0xb8, 0x7d, 0x2f, 0x1e, 0x98, 0xb7, 0xde, 0xa, 0xff, 0xa0, 0x52, 0x60, 0x83, 0x56, 0xc5, 0xd1, 0xa2}}
return a, nil
}
@@ -126,7 +126,7 @@ func docGo() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "doc.go", size: 380, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "doc.go", size: 380, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x1, 0xd4, 0xd6, 0xc7, 0x44, 0xd4, 0xfd, 0x7b, 0x69, 0x1f, 0xe3, 0xe, 0x48, 0x14, 0x99, 0xf0, 0x8e, 0x43, 0xae, 0x54, 0x64, 0xa2, 0x8b, 0x82, 0x1c, 0x2b, 0xb, 0xec, 0xf5, 0xb3, 0xfc}}
return a, nil
}
diff --git a/protocol/chat_test.go b/protocol/chat_test.go
index b8486b6c055..8965542e6d6 100644
--- a/protocol/chat_test.go
+++ b/protocol/chat_test.go
@@ -129,7 +129,7 @@ func (s *ChatTestSuite) TestSerializeJSON() {
message.From = "0x04deaafa03e3a646e54a36ec3f6968c1d3686847d88420f00c0ab6ee517ee1893398fca28aacd2af74f2654738c21d10bad3d88dc64201ebe0de5cf1e313970d3d"
message.Clock = 1
- message.Text = "`some markdown text`"
+ message.Text = "`some markdown text` https://status.im"
s.Require().NoError(message.PrepareContent(""))
message.ParsedTextAst = nil
chat.LastMessage = message
diff --git a/protocol/common/message.go b/protocol/common/message.go
index c2906621b0f..a0d84c8f5a1 100644
--- a/protocol/common/message.go
+++ b/protocol/common/message.go
@@ -8,6 +8,7 @@ import (
"errors"
"fmt"
"io/ioutil"
+ "net/url"
"os"
"strings"
"unicode"
@@ -80,6 +81,25 @@ const (
ContactVerificationStateCanceled
)
+type LinkPreviewThumbnail struct {
+ Width int `json:"width"`
+ Height int `json:"height"`
+ // Non-empty when the thumbnail is available via the media server, i.e. after
+ // the chat message is sent.
+ URL string `json:"url,omitempty"`
+ // Non-empty when the thumbnail payload needs to be shared with the client,
+ // but before it has been persisted.
+ DataURI string `json:"dataUri,omitempty"`
+}
+
+type LinkPreview struct {
+ URL string `json:"url"`
+ Hostname string `json:"hostname"`
+ Title string `json:"title,omitempty"`
+ Description string `json:"description,omitempty"`
+ Thumbnail LinkPreviewThumbnail `json:"thumbnail,omitempty"`
+}
+
const EveryoneMentionTag = "0x00001"
type CommandParameters struct {
@@ -197,7 +217,8 @@ type Message struct {
Replied bool `json:"replied"`
// Links is an array of links within given message
- Links []string
+ Links []string
+ LinkPreviews []LinkPreview `json:"linkPreviews"`
// EditedAt indicates the clock value it was edited
EditedAt uint64 `json:"editedAt"`
@@ -264,6 +285,7 @@ func (m *Message) MarshalJSON() ([]byte, error) {
Mentioned bool `json:"mentioned,omitempty"`
Replied bool `json:"replied,omitempty"`
Links []string `json:"links,omitempty"`
+ LinkPreviews []LinkPreview `json:"linkPreviews,omitempty"`
EditedAt uint64 `json:"editedAt,omitempty"`
Deleted bool `json:"deleted,omitempty"`
DeletedBy string `json:"deletedBy,omitempty"`
@@ -302,6 +324,7 @@ func (m *Message) MarshalJSON() ([]byte, error) {
Mentioned: m.Mentioned,
Replied: m.Replied,
Links: m.Links,
+ LinkPreviews: m.LinkPreviews,
MessageType: m.MessageType,
CommandParameters: m.CommandParameters,
GapParameters: m.GapParameters,
@@ -522,6 +545,10 @@ type MentionsAndLinksVisitor struct {
links []string
}
+type LinksVisitor struct {
+ Links []string
+}
+
func (v *MentionsAndLinksVisitor) Visit(node ast.Node, entering bool) ast.WalkStatus {
// only on entering we fetch, otherwise we go on
if !entering {
@@ -541,12 +568,31 @@ func (v *MentionsAndLinksVisitor) Visit(node ast.Node, entering bool) ast.WalkSt
return ast.GoToNext
}
+func (v *LinksVisitor) Visit(node ast.Node, entering bool) ast.WalkStatus {
+ if !entering {
+ return ast.GoToNext
+ }
+
+ switch n := node.(type) {
+ case *ast.Link:
+ v.Links = append(v.Links, string(n.Destination))
+ }
+
+ return ast.GoToNext
+}
+
func runMentionsAndLinksVisitor(parsedText ast.Node, identity string) *MentionsAndLinksVisitor {
visitor := &MentionsAndLinksVisitor{identity: identity}
ast.Walk(parsedText, visitor)
return visitor
}
+func RunLinksVisitor(parsedText ast.Node) *LinksVisitor {
+ visitor := &LinksVisitor{}
+ ast.Walk(parsedText, visitor)
+ return visitor
+}
+
// PrepareContent return the parsed content of the message, the line-count and whether
// is a right-to-left message
func (m *Message) PrepareContent(identity string) error {
@@ -711,6 +757,88 @@ func (m *Message) LoadImage() error {
return nil
}
+func isValidLinkPreviewForProto(preview LinkPreview) bool {
+ return preview.Title != "" && preview.URL != "" &&
+ ((preview.Thumbnail.DataURI == "" && preview.Thumbnail.Width == 0 && preview.Thumbnail.Height == 0) ||
+ (preview.Thumbnail.DataURI != "" && preview.Thumbnail.Width > 0 && preview.Thumbnail.Height > 0))
+}
+
+// ConvertLinkPreviewsToProto expects previews to be correctly sent by the
+// client because we can't attempt to re-unfurl URLs at this point (it's
+// actually undesirable). We run a basic validation as an additional safety net.
+func (m *Message) ConvertLinkPreviewsToProto() ([]*protobuf.UnfurledLink, error) {
+ if len(m.LinkPreviews) == 0 {
+ return nil, nil
+ }
+
+ unfurledLinks := make([]*protobuf.UnfurledLink, 0, len(m.LinkPreviews))
+
+ for _, preview := range m.LinkPreviews {
+ // Do not process subsequent previews because we do expect all previews to
+ // be valid at this stage.
+ if !isValidLinkPreviewForProto(preview) {
+ return nil, fmt.Errorf("invalid link preview, url='%s'", preview.URL)
+ }
+
+ var payload []byte
+ var err error
+ if preview.Thumbnail.DataURI != "" {
+ payload, err = images.GetPayloadFromURI(preview.Thumbnail.DataURI)
+ if err != nil {
+ return nil, fmt.Errorf("could not get data URI payload, url='%s': %w", preview.URL, err)
+ }
+ }
+
+ ul := &protobuf.UnfurledLink{
+ Url: preview.URL,
+ Title: preview.Title,
+ Description: preview.Description,
+ ThumbnailWidth: uint32(preview.Thumbnail.Width),
+ ThumbnailHeight: uint32(preview.Thumbnail.Height),
+ ThumbnailPayload: payload,
+ }
+ unfurledLinks = append(unfurledLinks, ul)
+ }
+
+ return unfurledLinks, nil
+}
+
+func (m *Message) ConvertFromProtoToLinkPreviews(makeMediaServerURL func(msgID string, previewURL string) string) []LinkPreview {
+ var links []*protobuf.UnfurledLink
+
+ if links = m.GetUnfurledLinks(); links == nil {
+ return nil
+ }
+
+ previews := make([]LinkPreview, 0, len(links))
+ for _, link := range links {
+ parsedURL, err := url.Parse(link.Url)
+ var hostname string
+ // URL parsing in Go can fail with URLs that weren't correctly URL encoded.
+ // This shouldn't happen in general, but if an error happens we just reuse
+ // the full URL.
+ if err != nil {
+ hostname = link.Url
+ } else {
+ hostname = parsedURL.Hostname()
+ }
+ lp := LinkPreview{
+ Description: link.Description,
+ Hostname: hostname,
+ Title: link.Title,
+ URL: link.Url,
+ }
+ if payload := link.GetThumbnailPayload(); payload != nil {
+ lp.Thumbnail.Width = int(link.ThumbnailWidth)
+ lp.Thumbnail.Height = int(link.ThumbnailHeight)
+ lp.Thumbnail.URL = makeMediaServerURL(m.ID, link.Url)
+ }
+ previews = append(previews, lp)
+ }
+
+ return previews
+}
+
func (m *Message) SetAlbumIDAndImagesCount(albumID string, imagesCount uint32) error {
imageMessage := m.GetImage()
if imageMessage == nil {
diff --git a/protocol/common/message_test.go b/protocol/common/message_test.go
index b818ab2e8e0..e5f9abe0cfe 100644
--- a/protocol/common/message_test.go
+++ b/protocol/common/message_test.go
@@ -1,11 +1,10 @@
package common
import (
+ "encoding/base64"
"encoding/json"
"io/ioutil"
- "log"
"os"
- "strings"
"testing"
"github.com/stretchr/testify/require"
@@ -132,17 +131,150 @@ func TestPrepareSimplifiedText(t *testing.T) {
require.Equal(t, "hey "+canonicalName1+" "+canonicalName2, simplifiedText)
}
-func TestMarshalMessageJSON(t *testing.T) {
- message := &Message{}
- from, err := crypto.GenerateKey()
+func TestConvertLinkPreviewsToProto(t *testing.T) {
+ msg := Message{
+ LinkPreviews: []LinkPreview{
+ {
+ Description: "GitHub is where people build software.",
+ Hostname: "github.com",
+ Title: "Build software better, together",
+ URL: "https://github.com",
+ Thumbnail: LinkPreviewThumbnail{
+ Width: 100,
+ Height: 200,
+ URL: "http://localhost:9999",
+ DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
+ },
+ },
+ },
+ }
+
+ unfurledLinks, err := msg.ConvertLinkPreviewsToProto()
require.NoError(t, err)
- message.From = PubkeyToHex(&from.PublicKey)
+ require.Len(t, unfurledLinks, 1)
- encodedMessage, err := json.Marshal(message)
+ l := unfurledLinks[0]
+ validPreview := msg.LinkPreviews[0]
+ require.Equal(t, validPreview.Description, l.Description)
+ require.Equal(t, validPreview.Title, l.Title)
+ require.Equal(t, uint32(validPreview.Thumbnail.Width), l.ThumbnailWidth)
+ require.Equal(t, uint32(validPreview.Thumbnail.Height), l.ThumbnailHeight)
+ expectedPayload, err := base64.StdEncoding.DecodeString("iVBORw0KGgoAAAANSUg=")
+ require.NoError(t, err)
+ require.Equal(t, expectedPayload, l.ThumbnailPayload)
+
+ // Test any invalid link preview causes an early return.
+ invalidPreview := validPreview
+ invalidPreview.Title = ""
+ msg.LinkPreviews = []LinkPreview{invalidPreview}
+ _, err = msg.ConvertLinkPreviewsToProto()
+ require.ErrorContains(t, err, "invalid link preview, url='https://github.com'")
+
+ // Test invalid data URI invalidates a preview.
+ invalidPreview = validPreview
+ invalidPreview.Thumbnail.DataURI = "data:hello/png,iVBOR"
+ msg.LinkPreviews = []LinkPreview{invalidPreview}
+ _, err = msg.ConvertLinkPreviewsToProto()
+ require.ErrorContains(t, err, "could not get data URI payload, url='https://github.com': wrong uri format")
+
+ // Test thumbnail is optional.
+ somePreview := validPreview
+ somePreview.Thumbnail.DataURI = ""
+ somePreview.Thumbnail.Width = 0
+ somePreview.Thumbnail.Height = 0
+ msg.LinkPreviews = []LinkPreview{somePreview}
+ unfurledLinks, err = msg.ConvertLinkPreviewsToProto()
require.NoError(t, err)
+ require.Len(t, unfurledLinks, 1)
+ require.Nil(t, unfurledLinks[0].ThumbnailPayload)
+}
+
+func TestConvertFromProtoToLinkPreviews(t *testing.T) {
+ l := &protobuf.UnfurledLink{
+ Description: "GitHub is where people build software.",
+ Title: "Build software better, together",
+ Url: "https://github.com",
+ ThumbnailPayload: []byte(""),
+ ThumbnailWidth: 100,
+ ThumbnailHeight: 200,
+ }
+ msg := Message{
+ ID: "42",
+ ChatMessage: protobuf.ChatMessage{
+ UnfurledLinks: []*protobuf.UnfurledLink{l},
+ },
+ }
+
+ urlMaker := func(msgID string, linkURL string) string {
+ return "https://localhost:6666/" + msgID + "-" + linkURL
+ }
+
+ previews := msg.ConvertFromProtoToLinkPreviews(urlMaker)
+ require.Len(t, previews, 1)
+ p := previews[0]
+ require.Equal(t, "github.com", p.Hostname)
+ require.Equal(t, l.Description, p.Description)
+ require.Equal(t, l.Url, p.URL)
+ require.Equal(t, int(l.ThumbnailHeight), p.Thumbnail.Height)
+ require.Equal(t, int(l.ThumbnailWidth), p.Thumbnail.Width)
+ // Important, don't build up a data URI because the thumbnail should be
+ // fetched from the media server.
+ require.Equal(t, "", p.Thumbnail.DataURI)
+ require.Equal(t, "https://localhost:6666/42-https://github.com", p.Thumbnail.URL)
+
+ // Test when the URL is not parseable by url.Parse.
+ l.Url = "postgres://user:abc{DEf1=ghi@example.com:5432/db?sslmode=require"
+ msg.ChatMessage.UnfurledLinks = []*protobuf.UnfurledLink{l}
+ previews = msg.ConvertFromProtoToLinkPreviews(urlMaker)
+ require.Len(t, previews, 1)
+ p = previews[0]
+ require.Equal(t, l.Url, p.Hostname)
+
+ // Test when there's no thumbnail payload.
+ l = &protobuf.UnfurledLink{
+ Description: "GitHub is where people build software.",
+ Title: "Build software better, together",
+ Url: "https://github.com",
+ }
+ msg.ChatMessage.UnfurledLinks = []*protobuf.UnfurledLink{l}
+ previews = msg.ConvertFromProtoToLinkPreviews(urlMaker)
+ require.Len(t, previews, 1)
+ p = previews[0]
+ require.Equal(t, 0, p.Thumbnail.Height)
+ require.Equal(t, 0, p.Thumbnail.Width)
+ require.Equal(t, "", p.Thumbnail.URL)
+}
+
+func assertMarshalAndUnmarshalJSON[T any](t *testing.T, obj *T, msgAndArgs ...any) {
+ rawJSON, err := json.Marshal(obj)
+ require.NoError(t, err, msgAndArgs...)
+
+ var unmarshalled T
+ err = json.Unmarshal(rawJSON, &unmarshalled)
+ require.NoError(t, err, msgAndArgs...)
+ require.Equal(t, obj, &unmarshalled, msgAndArgs...)
+}
+
+func TestMarshalMessageJSON(t *testing.T) {
+ msg := &Message{
+ ID: "1",
+ From: "0x04c51631b3354242d5a56f044c3b7703bcc001e8c725c4706928b3fac3c2a12ec9019e1e224d487f5c893389405bcec998bc687307f290a569d6a97d24b711bca8",
+ LinkPreviews: []LinkPreview{
+ {
+ Description: "GitHub is where people build software.",
+ Hostname: "github.com",
+ Title: "Build software better, together",
+ URL: "https://github.com",
+ Thumbnail: LinkPreviewThumbnail{
+ Width: 100,
+ Height: 200,
+ URL: "http://localhost:9999",
+ DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
+ },
+ },
+ },
+ }
- log.Println("### encodedMessage", string(encodedMessage))
- require.True(t, strings.Contains(string(encodedMessage), "compressedKey\":\"zQ"))
- require.True(t, strings.Contains(string(encodedMessage), "emojiHash"))
+ assertMarshalAndUnmarshalJSON(t, msg, "message ID='%s'", msg.ID)
}
diff --git a/protocol/encryption/migrations/migrations.go b/protocol/encryption/migrations/migrations.go
index 19743253b48..cd3e9cf5983 100644
--- a/protocol/encryption/migrations/migrations.go
+++ b/protocol/encryption/migrations/migrations.go
@@ -103,7 +103,7 @@ func _1536754952_initial_schemaDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1536754952_initial_schema.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1536754952_initial_schema.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x44, 0xcf, 0x76, 0x71, 0x1f, 0x5e, 0x9a, 0x43, 0xd8, 0xcd, 0xb8, 0xc3, 0x70, 0xc3, 0x7f, 0xfc, 0x90, 0xb4, 0x25, 0x1e, 0xf4, 0x66, 0x20, 0xb8, 0x33, 0x7e, 0xb0, 0x76, 0x1f, 0xc, 0xc0, 0x75}}
return a, nil
}
@@ -123,7 +123,7 @@ func _1536754952_initial_schemaUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1536754952_initial_schema.up.sql", size: 962, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1536754952_initial_schema.up.sql", size: 962, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x90, 0x5a, 0x59, 0x3e, 0x3, 0xe2, 0x3c, 0x81, 0x42, 0xcd, 0x4c, 0x9a, 0xe8, 0xda, 0x93, 0x2b, 0x70, 0xa4, 0xd5, 0x29, 0x3e, 0xd5, 0xc9, 0x27, 0xb6, 0xb7, 0x65, 0xff, 0x0, 0xcb, 0xde}}
return a, nil
}
@@ -143,7 +143,7 @@ func _1539249977_update_ratchet_infoDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1539249977_update_ratchet_info.down.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1539249977_update_ratchet_info.down.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0xa4, 0xeb, 0xa0, 0xe6, 0xa0, 0xd4, 0x48, 0xbb, 0xad, 0x6f, 0x7d, 0x67, 0x8c, 0xbd, 0x25, 0xde, 0x1f, 0x73, 0x9a, 0xbb, 0xa8, 0xc9, 0x30, 0xb7, 0xa9, 0x7c, 0xaf, 0xb5, 0x1, 0x61, 0xdd}}
return a, nil
}
@@ -163,7 +163,7 @@ func _1539249977_update_ratchet_infoUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1539249977_update_ratchet_info.up.sql", size: 368, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1539249977_update_ratchet_info.up.sql", size: 368, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0x8e, 0xbf, 0x6f, 0xa, 0xc0, 0xe1, 0x3c, 0x42, 0x28, 0x88, 0x1d, 0xdb, 0xba, 0x1c, 0x83, 0xec, 0xba, 0xd3, 0x5f, 0x5c, 0x77, 0x5e, 0xa7, 0x46, 0x36, 0xec, 0x69, 0xa, 0x4b, 0x17, 0x79}}
return a, nil
}
@@ -183,7 +183,7 @@ func _1540715431_add_versionDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1540715431_add_version.down.sql", size: 127, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1540715431_add_version.down.sql", size: 127, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x9, 0x4, 0xe3, 0x76, 0x2e, 0xb8, 0x9, 0x23, 0xf0, 0x70, 0x93, 0xc4, 0x50, 0xe, 0x9d, 0x84, 0x22, 0x8c, 0x94, 0xd3, 0x24, 0x9, 0x9a, 0xc1, 0xa1, 0x48, 0x45, 0xfd, 0x40, 0x6e, 0xe6}}
return a, nil
}
@@ -203,7 +203,7 @@ func _1540715431_add_versionUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1540715431_add_version.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1540715431_add_version.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc7, 0x4c, 0x36, 0x96, 0xdf, 0x16, 0x10, 0xa6, 0x27, 0x1a, 0x79, 0x8b, 0x42, 0x83, 0x23, 0xc, 0x7e, 0xb6, 0x3d, 0x2, 0xda, 0xa4, 0xb4, 0xd, 0x27, 0x55, 0xba, 0xdc, 0xb2, 0x88, 0x8f, 0xa6}}
return a, nil
}
@@ -223,7 +223,7 @@ func _1541164797_add_installationsDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1541164797_add_installations.down.sql", size: 26, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1541164797_add_installations.down.sql", size: 26, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xfd, 0xe6, 0xd8, 0xca, 0x3b, 0x38, 0x18, 0xee, 0x0, 0x5f, 0x36, 0x9e, 0x1e, 0xd, 0x19, 0x3e, 0xb4, 0x73, 0x53, 0xe9, 0xa5, 0xac, 0xdd, 0xa1, 0x2f, 0xc7, 0x6c, 0xa8, 0xd9, 0xa, 0x88}}
return a, nil
}
@@ -243,7 +243,7 @@ func _1541164797_add_installationsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1541164797_add_installations.up.sql", size: 216, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1541164797_add_installations.up.sql", size: 216, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2d, 0x18, 0x26, 0xb8, 0x88, 0x47, 0xdb, 0x83, 0xcc, 0xb6, 0x9d, 0x1c, 0x1, 0xae, 0x2f, 0xde, 0x97, 0x82, 0x3, 0x30, 0xa8, 0x63, 0xa1, 0x78, 0x4b, 0xa5, 0x9, 0x8, 0x75, 0xa2, 0x57, 0x81}}
return a, nil
}
@@ -263,7 +263,7 @@ func _1558084410_add_secretDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1558084410_add_secret.down.sql", size: 56, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1558084410_add_secret.down.sql", size: 56, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0xb, 0x65, 0xdf, 0x59, 0xbf, 0xe9, 0x5, 0x5b, 0x6f, 0xd5, 0x3a, 0xb7, 0x57, 0xe8, 0x78, 0x38, 0x73, 0x53, 0x57, 0xf7, 0x24, 0x4, 0xe4, 0xa2, 0x49, 0x22, 0xa2, 0xc6, 0xfd, 0x80, 0xa4}}
return a, nil
}
@@ -283,7 +283,7 @@ func _1558084410_add_secretUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1558084410_add_secret.up.sql", size: 301, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1558084410_add_secret.up.sql", size: 301, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x32, 0x36, 0x8e, 0x47, 0xb0, 0x8f, 0xc1, 0xc6, 0xf7, 0xc6, 0x9f, 0x2d, 0x44, 0x75, 0x2b, 0x26, 0xec, 0x6, 0xa0, 0x7b, 0xa5, 0xbd, 0xc8, 0x76, 0x8a, 0x82, 0x68, 0x2, 0x42, 0xb5, 0xf4}}
return a, nil
}
@@ -303,7 +303,7 @@ func _1558588866_add_versionDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1558588866_add_version.down.sql", size: 47, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1558588866_add_version.down.sql", size: 47, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x52, 0x34, 0x3c, 0x46, 0x4a, 0xf0, 0x72, 0x47, 0x6f, 0x49, 0x5c, 0xc7, 0xf9, 0x32, 0xce, 0xc4, 0x3d, 0xfd, 0x61, 0xa1, 0x8b, 0x8f, 0xf2, 0x31, 0x34, 0xde, 0x15, 0x49, 0xa6, 0xde, 0xb9}}
return a, nil
}
@@ -323,7 +323,7 @@ func _1558588866_add_versionUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1558588866_add_version.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1558588866_add_version.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2a, 0xea, 0x64, 0x39, 0x61, 0x20, 0x83, 0x83, 0xb, 0x2e, 0x79, 0x64, 0xb, 0x53, 0xfa, 0xfe, 0xc6, 0xf7, 0x67, 0x42, 0xd3, 0x4f, 0xdc, 0x7e, 0x30, 0x32, 0xe8, 0x14, 0x41, 0xe9, 0xe7, 0x3b}}
return a, nil
}
@@ -343,7 +343,7 @@ func _1559627659_add_contact_codeDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1559627659_add_contact_code.down.sql", size: 32, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1559627659_add_contact_code.down.sql", size: 32, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5d, 0x64, 0x6d, 0xce, 0x24, 0x42, 0x20, 0x8d, 0x4f, 0x37, 0xaa, 0x9d, 0xc, 0x57, 0x98, 0xc1, 0xd1, 0x1a, 0x34, 0xcd, 0x9f, 0x8f, 0x34, 0x86, 0xb3, 0xd3, 0xdc, 0xf1, 0x7d, 0xe5, 0x1b, 0x6e}}
return a, nil
}
@@ -363,7 +363,7 @@ func _1559627659_add_contact_codeUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1559627659_add_contact_code.up.sql", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1559627659_add_contact_code.up.sql", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x16, 0xf6, 0xc2, 0x62, 0x9c, 0xd2, 0xc9, 0x1e, 0xd8, 0xea, 0xaa, 0xea, 0x95, 0x8f, 0x89, 0x6a, 0x85, 0x5d, 0x9d, 0x99, 0x78, 0x3c, 0x90, 0x66, 0x99, 0x3e, 0x4b, 0x19, 0x62, 0xfb, 0x31, 0x4d}}
return a, nil
}
@@ -383,7 +383,7 @@ func _1561368210_add_installation_metadataDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1561368210_add_installation_metadata.down.sql", size: 35, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1561368210_add_installation_metadata.down.sql", size: 35, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0xde, 0x3f, 0xd2, 0x4a, 0x50, 0x98, 0x56, 0xe3, 0xc0, 0xcd, 0x9d, 0xb0, 0x34, 0x3b, 0xe5, 0x62, 0x18, 0xb5, 0x20, 0xc9, 0x3e, 0xdc, 0x6a, 0x40, 0x36, 0x66, 0xea, 0x51, 0x8c, 0x71, 0xf5}}
return a, nil
}
@@ -403,7 +403,7 @@ func _1561368210_add_installation_metadataUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1561368210_add_installation_metadata.up.sql", size: 267, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1561368210_add_installation_metadata.up.sql", size: 267, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb4, 0x71, 0x8f, 0x29, 0xb1, 0xaa, 0xd6, 0xd1, 0x8c, 0x17, 0xef, 0x6c, 0xd5, 0x80, 0xb8, 0x2c, 0xc3, 0xfe, 0xec, 0x24, 0x4d, 0xc8, 0x25, 0xd3, 0xb4, 0xcd, 0xa9, 0xac, 0x63, 0x61, 0xb2, 0x9c}}
return a, nil
}
@@ -423,7 +423,7 @@ func _1632236298_add_communitiesDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1632236298_add_communities.down.sql", size: 151, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1632236298_add_communities.down.sql", size: 151, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x26, 0xe5, 0x47, 0xd1, 0xe5, 0xec, 0x5b, 0x3e, 0xdc, 0x22, 0xf4, 0x27, 0xee, 0x70, 0xf3, 0x9, 0x4f, 0xd2, 0x9f, 0x92, 0xf, 0x5a, 0x18, 0x11, 0xb7, 0x40, 0xab, 0xf1, 0x98, 0x72, 0xd6, 0x60}}
return a, nil
}
@@ -443,7 +443,7 @@ func _1632236298_add_communitiesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1632236298_add_communities.up.sql", size: 584, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1632236298_add_communities.up.sql", size: 584, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0xe0, 0x1, 0x6e, 0x84, 0xc, 0x35, 0xe4, 0x5a, 0xf, 0xbe, 0xcb, 0xf7, 0xd2, 0xa8, 0x25, 0xf5, 0xdb, 0x7, 0xcb, 0xa3, 0xe6, 0xf4, 0xc4, 0x1b, 0xa5, 0xec, 0x32, 0x1e, 0x1e, 0x48, 0x60}}
return a, nil
}
@@ -463,7 +463,7 @@ func _1636536507_add_index_bundlesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1636536507_add_index_bundles.up.sql", size: 347, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1636536507_add_index_bundles.up.sql", size: 347, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf1, 0xb9, 0x3c, 0x16, 0xfc, 0xfb, 0xb2, 0xb4, 0x3b, 0xfe, 0xdc, 0xf5, 0x9c, 0x42, 0xa0, 0xa0, 0xd4, 0xd, 0x5b, 0x97, 0x10, 0x80, 0x95, 0xe, 0x13, 0xc1, 0x18, 0x8, 0xee, 0xf, 0x99, 0xee}}
return a, nil
}
@@ -483,7 +483,7 @@ func docGo() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "doc.go", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "doc.go", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xef, 0xaf, 0xdf, 0xcf, 0x65, 0xae, 0x19, 0xfc, 0x9d, 0x29, 0xc1, 0x91, 0xaf, 0xb5, 0xd5, 0xb1, 0x56, 0xf3, 0xee, 0xa8, 0xba, 0x13, 0x65, 0xdb, 0xab, 0xcf, 0x4e, 0xac, 0x92, 0xe9, 0x60, 0xf1}}
return a, nil
}
diff --git a/protocol/linkpreview/linkpreview.go b/protocol/linkpreview/linkpreview.go
new file mode 100644
index 00000000000..52888ea6837
--- /dev/null
+++ b/protocol/linkpreview/linkpreview.go
@@ -0,0 +1,327 @@
+package linkpreview
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "io/ioutil"
+ "net/http"
+ neturl "net/url"
+ "strings"
+ "time"
+
+ "github.com/keighl/metabolize"
+ "go.uber.org/zap"
+ "golang.org/x/net/publicsuffix"
+
+ "github.com/status-im/markdown"
+
+ "github.com/status-im/status-go/images"
+ "github.com/status-im/status-go/protocol/common"
+)
+
+// UnfurlError means a non-critical error, and that processing of the preview
+// should be interrupted and the preview probably ignored.
+type UnfurlError struct {
+ msg string
+ url string
+ err error
+}
+
+func (ue UnfurlError) Error() string {
+ return fmt.Sprintf("%s, url='%s'", ue.msg, ue.url)
+}
+
+func (ue UnfurlError) Unwrap() error {
+ return ue.err
+}
+
+type LinkPreview struct {
+ common.LinkPreview
+}
+
+type Unfurler interface {
+ unfurl(*neturl.URL) (common.LinkPreview, error)
+}
+
+const (
+ requestTimeout = 15000 * time.Millisecond
+
+ // Certain websites return an HTML error page if the user agent is unknown to
+ // them, e.g. IMDb.
+ defaultUserAgent = "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/109.0"
+
+ // Currently set to English, but we could make this setting dynamic according
+ // to the user's language of choice.
+ defaultAcceptLanguage = "en-US,en;q=0.5"
+)
+
+var (
+ httpClient = http.Client{Timeout: requestTimeout}
+)
+
+func fetchResponseBody(logger *zap.Logger, url string) ([]byte, error) {
+ ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
+ defer cancel()
+
+ req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ res, err := httpClient.Do(req)
+ if err != nil {
+ return nil, err
+ }
+ defer func() {
+ if err = res.Body.Close(); err != nil {
+ logger.Error("Failed to close response body", zap.Error(err))
+ }
+ }()
+
+ if res.StatusCode >= http.StatusBadRequest {
+ return nil, errors.New(http.StatusText(res.StatusCode))
+ }
+
+ bodyBytes, err := ioutil.ReadAll(res.Body)
+ if err != nil {
+ return nil, err
+ }
+
+ return bodyBytes, nil
+}
+
+func newDefaultLinkPreview(url *neturl.URL) common.LinkPreview {
+ return common.LinkPreview{
+ URL: url.String(),
+ Hostname: url.Hostname(),
+ }
+}
+
+func httpGETForOpenGraph(url string) (*http.Response, context.CancelFunc, error) {
+ ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
+
+ req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
+ if err != nil {
+ return nil, cancel, err
+ }
+ req.Header.Set("User-Agent", defaultUserAgent)
+ req.Header.Set("Accept-Language", defaultAcceptLanguage)
+
+ res, err := httpClient.Do(req)
+ return res, cancel, err
+}
+
+func fetchThumbnail(logger *zap.Logger, url string) (common.LinkPreviewThumbnail, error) {
+ var thumbnail common.LinkPreviewThumbnail
+
+ imgBytes, err := fetchResponseBody(logger, url)
+ if err != nil {
+ return thumbnail, fmt.Errorf("could not fetch thumbnail: %w", err)
+ }
+
+ width, height, err := images.GetImageDimensions(imgBytes)
+ if err != nil {
+ return thumbnail, fmt.Errorf("could not get image dimensions: %w", err)
+ }
+ thumbnail.Width = width
+ thumbnail.Height = height
+
+ dataURI, err := images.GetPayloadDataURI(imgBytes)
+ if err != nil {
+ return thumbnail, fmt.Errorf("could not build data URI: %w", err)
+ }
+ thumbnail.DataURI = dataURI
+
+ return thumbnail, nil
+}
+
+type OpenGraphMetadata struct {
+ Title string `json:"title" meta:"og:title"`
+ Description string `json:"description" meta:"og:description"`
+ ThumbnailURL string `json:"thumbnailUrl" meta:"og:image"`
+}
+
+// OpenGraphUnfurler can be used either as the default unfurler for some websites
+// (e.g. GitHub), or as a fallback strategy. It parses HTML and extract
+// OpenGraph meta tags. If an oEmbed endpoint is available, it should be
+// preferred.
+type OpenGraphUnfurler struct {
+ logger *zap.Logger
+}
+
+func (u OpenGraphUnfurler) unfurl(url *neturl.URL) (common.LinkPreview, error) {
+ preview := newDefaultLinkPreview(url)
+
+ res, cancel, err := httpGETForOpenGraph(url.String())
+ defer cancel()
+ defer func() {
+ if res != nil {
+ if err = res.Body.Close(); err != nil {
+ u.logger.Error("failed to close response body", zap.Error(err))
+ }
+ }
+ }()
+ if err != nil {
+ return preview, UnfurlError{
+ msg: "failed to get HTML page",
+ url: url.String(),
+ err: err,
+ }
+ }
+
+ // Behave like WhatsApp, i.e. if the response is a 404, consider the URL
+ // unfurleable. We can try to unfurl from the 404 HTML, which works well for
+ // certain websites, like GitHub, but it also potentially confuses users
+ // because they'll be sharing previews that don't match the actual URLs.
+ if res.StatusCode == http.StatusNotFound {
+ return preview, UnfurlError{
+ msg: "could not find page",
+ url: url.String(),
+ err: errors.New(""),
+ }
+ }
+
+ var ogMetadata OpenGraphMetadata
+ err = metabolize.Metabolize(res.Body, &ogMetadata)
+ if err != nil {
+ return preview, UnfurlError{
+ msg: "failed to parse OpenGraph data",
+ url: url.String(),
+ err: err,
+ }
+ }
+
+ // There are URLs like https://wikipedia.org/ that don't have an OpenGraph
+ // title tag, but article pages do. In the future, we can fallback to the
+ // website's title by using the
tag.
+ if ogMetadata.Title == "" {
+ return preview, UnfurlError{
+ msg: "missing title",
+ url: url.String(),
+ err: errors.New(""),
+ }
+ }
+
+ if ogMetadata.ThumbnailURL != "" {
+ t, err := fetchThumbnail(u.logger, ogMetadata.ThumbnailURL)
+ if err != nil {
+ // Given we want to fetch thumbnails on a best-effort basis, if an error
+ // happens we simply log it.
+ u.logger.Info("failed to fetch thumbnail", zap.String("url", url.String()), zap.Error(err))
+ } else {
+ preview.Thumbnail = t
+ }
+ }
+
+ preview.Title = ogMetadata.Title
+ preview.Description = ogMetadata.Description
+ return preview, nil
+}
+
+func newUnfurler(logger *zap.Logger, url *neturl.URL) Unfurler {
+ u := new(OpenGraphUnfurler)
+ u.logger = logger
+ return u
+}
+
+func unfurl(logger *zap.Logger, url string) (common.LinkPreview, error) {
+ var preview common.LinkPreview
+
+ parsedURL, err := neturl.Parse(url)
+ if err != nil {
+ return preview, err
+ }
+
+ unfurler := newUnfurler(logger, parsedURL)
+ preview, err = unfurler.unfurl(parsedURL)
+ if err != nil {
+ return preview, err
+ }
+ preview.Hostname = strings.ToLower(parsedURL.Hostname())
+
+ return preview, nil
+}
+
+// parseValidURL is a stricter version of url.Parse that performs additional
+// checks to ensure the URL is valid for clients to request a link preview.
+func parseValidURL(rawURL string) (*neturl.URL, error) {
+ u, err := neturl.Parse(rawURL)
+ if err != nil {
+ return nil, fmt.Errorf("parsing URL failed: %w", err)
+ }
+
+ if u.Scheme == "" {
+ return nil, errors.New("missing URL scheme")
+ }
+
+ _, err = publicsuffix.EffectiveTLDPlusOne(u.Hostname())
+ if err != nil {
+ return nil, fmt.Errorf("missing known URL domain: %w", err)
+ }
+
+ return u, nil
+}
+
+// GetURLs returns only what we consider unfurleable URLs.
+func GetURLs(text string) []string {
+ parsedText := markdown.Parse([]byte(text), nil)
+ visitor := common.RunLinksVisitor(parsedText)
+
+ urls := make([]string, 0, len(visitor.Links))
+ indexed := make(map[string]any, len(visitor.Links))
+
+ for _, rawURL := range visitor.Links {
+ parsedURL, err := parseValidURL(rawURL)
+ if err != nil {
+ continue
+ }
+ // Lowercase the host so the URL can be used as a cache key. Particularly on
+ // mobile clients it is common that the first character in a text input is
+ // automatically uppercased. In WhatsApp they incorrectly lowercase the
+ // URL's path, but this is incorrect. For instance, some URL shorteners are
+ // case-sensitive, some websites encode base64 in the path, etc.
+ parsedURL.Host = strings.ToLower(parsedURL.Host)
+
+ idx := parsedURL.String()
+ // Removes the spurious trailing forward slash.
+ idx = strings.TrimRight(idx, "/")
+ if _, exists := indexed[idx]; exists {
+ continue
+ } else {
+ indexed[idx] = nil
+ urls = append(urls, idx)
+ }
+ }
+
+ return urls
+}
+
+// UnfurlURLs assumes clients pass URLs verbatim that were validated and
+// processed by GetURLs.
+func UnfurlURLs(logger *zap.Logger, urls []string) ([]common.LinkPreview, error) {
+ var err error
+ if logger == nil {
+ logger, err = zap.NewDevelopment()
+ if err != nil {
+ return nil, fmt.Errorf("failed to create logger: %w", err)
+ }
+ }
+
+ previews := make([]common.LinkPreview, 0, len(urls))
+
+ for _, url := range urls {
+ p, err := unfurl(logger, url)
+ if err != nil {
+ if unfurlErr, ok := err.(UnfurlError); ok {
+ logger.Info("failed to unfurl", zap.Error(unfurlErr))
+ continue
+ }
+
+ return nil, err
+ }
+ previews = append(previews, p)
+ }
+
+ return previews, nil
+}
diff --git a/protocol/linkpreview/linkpreview_test.go b/protocol/linkpreview/linkpreview_test.go
new file mode 100644
index 00000000000..39c52e207ba
--- /dev/null
+++ b/protocol/linkpreview/linkpreview_test.go
@@ -0,0 +1,193 @@
+package linkpreview
+
+import (
+ "math"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+
+ "github.com/status-im/status-go/protocol/common"
+)
+
+// assertContainsLongString verifies if actual contains a slice of expected and
+// correctly prints the cause of the failure. The default behavior of
+// require.Contains with long strings is to not print the formatted message
+// (varargs to require.Contains).
+func assertContainsLongString(t *testing.T, expected string, actual string, maxLength int) {
+ var safeIdx float64
+ var actualShort string
+ var expectedShort string
+
+ if len(actual) > 0 {
+ safeIdx = math.Min(float64(maxLength), float64(len(actual)-1))
+ actualShort = actual[:int(safeIdx)]
+ }
+
+ if len(expected) > 0 {
+ safeIdx = math.Min(float64(maxLength), float64(len(expected)-1))
+ expectedShort = expected[:int(safeIdx)]
+ }
+
+ require.Contains(
+ t,
+ actual, expected,
+ "'%s' should contain '%s'",
+ actualShort,
+ expectedShort,
+ )
+}
+
+func TestGetLinks(t *testing.T) {
+ examples := []struct {
+ args string
+ expected []string
+ }{
+ // Invalid URLs are not taken in consideration.
+ {args: "", expected: []string{}},
+ {args: " ", expected: []string{}},
+ {args: "https", expected: []string{}},
+ {args: "https://", expected: []string{}},
+ {args: "https://status", expected: []string{}},
+ {args: "https://status.", expected: []string{}},
+ // URLs must include the sheme.
+ {args: "status.com", expected: []string{}},
+
+ {args: "https://status.im", expected: []string{"https://status.im"}},
+
+ // Only the host should be lowercased.
+ {args: "HTTPS://STATUS.IM/path/to?Q=AbCdE", expected: []string{"https://status.im/path/to?Q=AbCdE"}},
+
+ // Remove trailing forward slash.
+ {args: "https://github.com/", expected: []string{"https://github.com"}},
+ {args: "https://www.youtube.com/watch?v=mzOyYtfXkb0/", expected: []string{"https://www.youtube.com/watch?v=mzOyYtfXkb0"}},
+
+ // Valid URL.
+ {args: "https://status.c", expected: []string{"https://status.c"}},
+ {args: "https://status.im/test", expected: []string{"https://status.im/test"}},
+ {args: "https://192.168.0.100:9999/xyz", expected: []string{"https://192.168.0.100:9999/xyz"}},
+
+ // There is a bug in the code that builds the AST from markdown text,
+ // because it removes the closing parenthesis, which means it won't be
+ // possible to unfurl this URL.
+ {args: "https://en.wikipedia.org/wiki/Status_message_(instant_messaging)", expected: []string{"https://en.wikipedia.org/wiki/Status_message_(instant_messaging"}},
+
+ // Multiple URLs.
+ {
+ args: "https://status.im/test https://www.youtube.com/watch?v=mzOyYtfXkb0",
+ expected: []string{"https://status.im/test", "https://www.youtube.com/watch?v=mzOyYtfXkb0"},
+ },
+ {
+ args: "status.im https://www.youtube.com/watch?v=mzOyYtfXkb0",
+ expected: []string{"https://www.youtube.com/watch?v=mzOyYtfXkb0"},
+ },
+ }
+
+ for _, ex := range examples {
+ links := GetURLs(ex.args)
+ require.Equal(t, ex.expected, links, "Failed for args: '%s'", ex.args)
+ }
+}
+
+func TestUnfurlURLs(t *testing.T) {
+ examples := []struct {
+ url string
+ expected common.LinkPreview
+ }{
+ {
+ url: "https://github.com/",
+ expected: common.LinkPreview{
+ Description: "GitHub is where over 100 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and fea...",
+ Hostname: "github.com",
+ Title: "GitHub: Let’s build from here",
+ URL: "https://github.com/",
+ Thumbnail: common.LinkPreviewThumbnail{
+ Width: 1200,
+ Height: 630,
+ URL: "",
+ DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAJ2CAMAAAB4",
+ },
+ },
+ },
+ {
+ url: "https://github.com/status-im/status-mobile/issues/15469",
+ expected: common.LinkPreview{
+ Description: "Designs https://www.figma.com/file/wA8Epdki2OWa8Vr067PCNQ/Composer-for-Mobile?node-id=2102-232933&t=tTYKjMpICnzwF5Zv-0 Out of scope Enable link previews (we can assume for now that is always on) Mu...",
+ Hostname: "github.com",
+ Title: "Allow users to customize links · Issue #15469 · status-im/status-mobile",
+ URL: "https://github.com/status-im/status-mobile/issues/15469",
+ Thumbnail: common.LinkPreviewThumbnail{
+ Width: 1200,
+ Height: 600,
+ URL: "",
+ DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAJYCAYAAABy",
+ },
+ },
+ },
+ {
+ url: "https://www.imdb.com/title/tt0117500/",
+ expected: common.LinkPreview{
+ Description: "The Rock: Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer. A mild-mannered chemist and an ex-con must lead the counterstrike when a rogue group of military men, led by a renegade general, threaten a nerve gas attack from Alcatraz against San Francisco.",
+ Hostname: "www.imdb.com",
+ Title: "The Rock (1996) - IMDb",
+ URL: "https://www.imdb.com/title/tt0117500/",
+ Thumbnail: common.LinkPreviewThumbnail{
+ Width: 1000,
+ Height: 1481,
+ URL: "",
+ DataURI: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkJCgg",
+ },
+ },
+ },
+ {
+ url: "https://www.youtube.com/watch?v=lE4UXdJSJM4",
+ expected: common.LinkPreview{
+ URL: "https://www.youtube.com/watch?v=lE4UXdJSJM4",
+ Hostname: "www.youtube.com",
+ Title: "Interview with a GNU/Linux user - Partition 1",
+ Description: "GNU/Linux Operating SystemInterview with a GNU/Linux user with Richie Guix - aired on © The GNU Linux.Programmer humorLinux humorProgramming jokesProgramming...",
+ Thumbnail: common.LinkPreviewThumbnail{
+ Width: 1280,
+ Height: 720,
+ DataURI: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUDBA8",
+ },
+ },
+ },
+ }
+
+ var urls []string
+ for _, e := range examples {
+ urls = append(urls, e.url)
+ }
+
+ links, err := UnfurlURLs(nil, urls)
+ require.NoError(t, err)
+ require.Len(t, links, len(examples), "all URLs should have been unfurled successfully")
+
+ for i, link := range links {
+ e := examples[i]
+ require.Equal(t, e.expected.URL, link.URL, e.url)
+ require.Equal(t, e.expected.Hostname, link.Hostname, e.url)
+ require.Equal(t, e.expected.Title, link.Title, e.url)
+ require.Equal(t, e.expected.Description, link.Description, e.url)
+
+ require.Equal(t, e.expected.Thumbnail.Width, link.Thumbnail.Width, e.url)
+ require.Equal(t, e.expected.Thumbnail.Height, link.Thumbnail.Height, e.url)
+ require.Equal(t, e.expected.Thumbnail.URL, link.Thumbnail.URL, e.url)
+ assertContainsLongString(t, e.expected.Thumbnail.DataURI, link.Thumbnail.DataURI, 100)
+ }
+
+ // Test URL that doesn't return any OpenGraph title.
+ previews, err := UnfurlURLs(nil, []string{"https://wikipedia.org"})
+ require.NoError(t, err)
+ require.Empty(t, previews)
+
+ // Test 404.
+ previews, err = UnfurlURLs(nil, []string{"https://github.com/status-im/i_do_not_exist"})
+ require.NoError(t, err)
+ require.Empty(t, previews)
+
+ // Test no response when trying to get OpenGraph metadata.
+ previews, err = UnfurlURLs(nil, []string{"https://wikipedia.o"})
+ require.NoError(t, err)
+ require.Empty(t, previews)
+}
diff --git a/protocol/message_persistence.go b/protocol/message_persistence.go
index 6c6c76d88dd..43b81f82bdf 100644
--- a/protocol/message_persistence.go
+++ b/protocol/message_persistence.go
@@ -80,6 +80,7 @@ func (db sqlitePersistence) tableUserMessagesAllFields() string {
community_id,
mentions,
links,
+ unfurled_links,
command_id,
command_value,
command_from,
@@ -132,6 +133,7 @@ func (db sqlitePersistence) tableUserMessagesAllFieldsJoin() string {
m1.community_id,
m1.mentions,
m1.links,
+ m1.unfurled_links,
m1.command_id,
m1.command_value,
m1.command_from,
@@ -208,6 +210,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
var quotedDeletedForMe sql.NullBool
var serializedMentions []byte
var serializedLinks []byte
+ var serializedUnfurledLinks []byte
var alias sql.NullString
var identicon sql.NullString
var communityID sql.NullString
@@ -263,6 +266,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
&communityID,
&serializedMentions,
&serializedLinks,
+ &serializedUnfurledLinks,
&command.ID,
&command.Value,
&command.From,
@@ -397,6 +401,13 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
}
}
+ if serializedUnfurledLinks != nil {
+ err = json.Unmarshal(serializedUnfurledLinks, &message.UnfurledLinks)
+ if err != nil {
+ return err
+ }
+ }
+
if attachment.Id != "" {
discordMessage.Attachments = append(discordMessage.Attachments, attachment)
}
@@ -477,6 +488,14 @@ func (db sqlitePersistence) tableUserMessagesAllValues(message *common.Message)
}
}
+ var serializedUnfurledLinks []byte
+ if links := message.GetUnfurledLinks(); links != nil {
+ serializedUnfurledLinks, err = json.Marshal(links)
+ if err != nil {
+ return nil, err
+ }
+ }
+
return []interface{}{
message.ID,
message.WhisperTimestamp,
@@ -508,6 +527,7 @@ func (db sqlitePersistence) tableUserMessagesAllValues(message *common.Message)
message.CommunityID,
serializedMentions,
serializedLinks,
+ serializedUnfurledLinks,
command.ID,
command.Value,
command.From,
diff --git a/protocol/messenger.go b/protocol/messenger.go
index c9efbae7f78..21bace557a2 100644
--- a/protocol/messenger.go
+++ b/protocol/messenger.go
@@ -47,6 +47,7 @@ import (
"github.com/status-im/status-go/protocol/identity"
"github.com/status-im/status-go/protocol/identity/alias"
"github.com/status-im/status-go/protocol/identity/identicon"
+ "github.com/status-im/status-go/protocol/linkpreview"
"github.com/status-im/status-go/protocol/protobuf"
"github.com/status-im/status-go/protocol/pushnotificationclient"
"github.com/status-im/status-go/protocol/pushnotificationserver"
@@ -2106,6 +2107,15 @@ func (m *Messenger) sendChatMessage(ctx context.Context, message *common.Message
}
}
+ unfurledLinks, err := message.ConvertLinkPreviewsToProto()
+ // We consider link previews non-critical data, so we do not want to block
+ // messages from being sent.
+ if err != nil {
+ m.logger.Error("failed to convert link previews", zap.Error(err))
+ } else {
+ message.UnfurledLinks = unfurledLinks
+ }
+
var response MessengerResponse
// A valid added chat is required.
@@ -4780,6 +4790,8 @@ func (m *Messenger) prepareMessage(msg *common.Message, s *server.MediaServer) {
if msg.ContentType == protobuf.ChatMessage_STICKER {
msg.StickerLocalURL = s.MakeStickerURL(msg.GetSticker().Hash)
}
+
+ msg.LinkPreviews = msg.ConvertFromProtoToLinkPreviews(s.MakeLinkPreviewThumbnailURL)
}
func (m *Messenger) AllMessageByChatIDWhichMatchTerm(chatID string, searchTerm string, caseSensitive bool) ([]*common.Message, error) {
@@ -5980,6 +5992,10 @@ func generateAliasAndIdenticon(pk string) (string, string, error) {
}
+func (m *Messenger) UnfurlURLs(urls []string) ([]common.LinkPreview, error) {
+ return linkpreview.UnfurlURLs(m.logger, urls)
+}
+
func (m *Messenger) SendEmojiReaction(ctx context.Context, chatID, messageID string, emojiID protobuf.EmojiReaction_Type) (*MessengerResponse, error) {
var response MessengerResponse
diff --git a/protocol/messenger_test.go b/protocol/messenger_test.go
index 16cb0d5ab12..9b7a8b85100 100644
--- a/protocol/messenger_test.go
+++ b/protocol/messenger_test.go
@@ -20,11 +20,13 @@ import (
"github.com/status-im/status-go/eth-node/crypto"
"github.com/status-im/status-go/eth-node/types"
enstypes "github.com/status-im/status-go/eth-node/types/ens"
+ "github.com/status-im/status-go/images"
"github.com/status-im/status-go/protocol/common"
"github.com/status-im/status-go/protocol/protobuf"
"github.com/status-im/status-go/protocol/requests"
"github.com/status-im/status-go/protocol/tt"
v1protocol "github.com/status-im/status-go/protocol/v1"
+ "github.com/status-im/status-go/server"
)
const (
@@ -2263,6 +2265,56 @@ func (s *MessengerSuite) TestShouldResendEmoji() {
s.True(ok)
}
+func (s *MessengerSuite) TestSendMessageWithPreviews() {
+ httpServer, err := server.NewMediaServer(s.m.database, nil, nil)
+ s.Require().NoError(err)
+ err = httpServer.SetPort(9876)
+ s.NoError(err)
+ s.m.httpServer = httpServer
+
+ chat := CreatePublicChat("test-chat", s.m.transport)
+ err = s.m.SaveChat(chat)
+ s.NoError(err)
+ inputMsg := buildTestMessage(*chat)
+
+ preview := common.LinkPreview{
+ URL: "https://github.com",
+ Title: "Build software better, together",
+ Description: "GitHub is where people build software.",
+ Thumbnail: common.LinkPreviewThumbnail{
+ DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
+ Width: 100,
+ Height: 200,
+ },
+ }
+ inputMsg.LinkPreviews = []common.LinkPreview{preview}
+
+ _, err = s.m.SendChatMessage(context.Background(), inputMsg)
+ s.NoError(err)
+
+ savedMsgs, _, err := s.m.MessageByChatID(chat.ID, "", 10)
+ s.Require().NoError(err)
+ s.Require().Len(savedMsgs, 1)
+ savedMsg := savedMsgs[0]
+
+ // Test unfurled links have been saved.
+ s.Require().Len(savedMsg.UnfurledLinks, 1)
+ unfurledLink := savedMsg.UnfurledLinks[0]
+ s.Require().Equal(preview.URL, unfurledLink.Url)
+ s.Require().Equal(preview.Title, unfurledLink.Title)
+ s.Require().Equal(preview.Description, unfurledLink.Description)
+
+ // Test the saved link thumbnail can be encoded as a data URI.
+ expectedDataURI, err := images.GetPayloadDataURI(unfurledLink.ThumbnailPayload)
+ s.Require().NoError(err)
+ s.Require().Equal(preview.Thumbnail.DataURI, expectedDataURI)
+
+ s.Require().Equal(
+ httpServer.MakeLinkPreviewThumbnailURL(inputMsg.ID, preview.URL),
+ savedMsg.LinkPreviews[0].Thumbnail.URL,
+ )
+}
+
func (s *MessengerSuite) TestMessageSent() {
//send message
chat := CreatePublicChat("test-chat", s.m.transport)
diff --git a/protocol/migrations/migrations.go b/protocol/migrations/migrations.go
index 91850919464..8b6f8628a30 100644
--- a/protocol/migrations/migrations.go
+++ b/protocol/migrations/migrations.go
@@ -88,6 +88,7 @@
// 1682528339_add_index_user_messages_unseen.up.sql (104B)
// 1683707289_recreate_deleted_for_mes.up.sql (408B)
// 1683725607_mark_discord_messages_as_seen.up.sql (108B)
+// 1684174617_add_url_previews_to_user_messages.up.sql (58B)
// README.md (554B)
// doc.go (850B)
@@ -173,7 +174,7 @@ func _000001_initDownDbSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xbb, 0x3f, 0x1, 0x75, 0x19, 0x70, 0x86, 0xa7, 0x34, 0x40, 0x17, 0x34, 0x3e, 0x18, 0x51, 0x79, 0xd4, 0x22, 0xad, 0x8f, 0x80, 0xcc, 0xa6, 0xcc, 0x6, 0x2b, 0x62, 0x2, 0x47, 0xba, 0xf9}}
return a, nil
}
@@ -193,7 +194,7 @@ func _000001_initUpDbSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1680102137, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0xdc, 0xeb, 0xe, 0xc2, 0x4f, 0x75, 0xa, 0xf6, 0x3e, 0xc7, 0xc4, 0x4, 0xe2, 0xe1, 0xa4, 0x73, 0x2f, 0x4a, 0xad, 0x1a, 0x0, 0xc3, 0x93, 0x9d, 0x77, 0x3e, 0x31, 0x91, 0x77, 0x2e, 0xc8}}
return a, nil
}
@@ -213,7 +214,7 @@ func _000002_add_last_ens_clock_valueUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4d, 0x3, 0x8f, 0xd5, 0x85, 0x83, 0x47, 0xbe, 0xf9, 0x82, 0x7e, 0x81, 0xa4, 0xbd, 0xaa, 0xd5, 0x98, 0x18, 0x5, 0x2d, 0x82, 0x42, 0x3b, 0x3, 0x50, 0xc3, 0x1e, 0x84, 0x35, 0xf, 0xb6, 0x2b}}
return a, nil
}
@@ -233,7 +234,7 @@ func _1586358095_add_replaceUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0xb3, 0xa9, 0xc7, 0x7f, 0x9d, 0x8f, 0x43, 0x8c, 0x9e, 0x58, 0x8d, 0x44, 0xbc, 0xfa, 0x6b, 0x5f, 0x3f, 0x5a, 0xbe, 0xe8, 0xb1, 0x16, 0xf, 0x91, 0x2a, 0xa0, 0x71, 0xbb, 0x8d, 0x6b, 0xcb}}
return a, nil
}
@@ -253,7 +254,7 @@ func _1588665364_add_image_dataUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd6, 0xc6, 0x35, 0xb4, 0x4c, 0x39, 0x96, 0x29, 0x30, 0xda, 0xf4, 0x8f, 0xcb, 0xf1, 0x9f, 0x84, 0xdc, 0x88, 0xd4, 0xd5, 0xbc, 0xb6, 0x5b, 0x46, 0x78, 0x67, 0x76, 0x1a, 0x5, 0x36, 0xdc, 0xe5}}
return a, nil
}
@@ -273,7 +274,7 @@ func _1589365189_add_pow_targetUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x3a, 0xe2, 0x2e, 0x7d, 0xaf, 0xbb, 0xcc, 0x21, 0xa1, 0x7a, 0x41, 0x9a, 0xd0, 0xbb, 0xa9, 0xc8, 0x35, 0xf9, 0x32, 0x34, 0x46, 0x44, 0x9a, 0x86, 0x40, 0x7c, 0xb9, 0x23, 0xc7, 0x3, 0x3f}}
return a, nil
}
@@ -293,7 +294,7 @@ func _1591277220_add_index_messagesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9c, 0xfe, 0xbe, 0xd5, 0xb8, 0x8f, 0xdd, 0xef, 0xbb, 0xa8, 0xad, 0x7f, 0xed, 0x5b, 0x5b, 0x2f, 0xe6, 0x82, 0x27, 0x78, 0x1f, 0xb9, 0x57, 0xdc, 0x8, 0xc2, 0xb2, 0xa9, 0x9a, 0x4, 0xe1, 0x7a}}
return a, nil
}
@@ -313,7 +314,7 @@ func _1593087212_add_mute_chat_and_raw_message_fieldsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x73, 0x99, 0x61, 0xd1, 0xaa, 0xb4, 0xbf, 0xaf, 0xd7, 0x20, 0x17, 0x40, 0xf9, 0x2, 0xfb, 0xcc, 0x40, 0x2a, 0xd, 0x86, 0x36, 0x30, 0x88, 0x89, 0x25, 0x80, 0x42, 0xb0, 0x5b, 0xe9, 0x73, 0x78}}
return a, nil
}
@@ -333,7 +334,7 @@ func _1595862781_add_audio_dataUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0xd2, 0xee, 0x55, 0xfb, 0x36, 0xa4, 0x92, 0x66, 0xe, 0x81, 0x62, 0x1e, 0x7a, 0x69, 0xa, 0xd5, 0x4b, 0xa5, 0x6a, 0x8d, 0x1d, 0xce, 0xf3, 0x3e, 0xc0, 0x5f, 0x9c, 0x66, 0x1b, 0xb4, 0xed}}
return a, nil
}
@@ -353,7 +354,7 @@ func _1595865249_create_emoji_reactions_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xc5, 0x43, 0x5c, 0x3d, 0x53, 0x43, 0x2c, 0x1a, 0xa5, 0xb6, 0xbf, 0x7, 0x4, 0x5a, 0x3e, 0x40, 0x8b, 0xa4, 0x57, 0x12, 0x58, 0xbc, 0x42, 0xe2, 0xc3, 0xde, 0x76, 0x98, 0x80, 0xe2, 0xbe}}
return a, nil
}
@@ -373,7 +374,7 @@ func _1596805115_create_group_chat_invitations_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0xb1, 0x14, 0x6d, 0x54, 0x28, 0x67, 0xc3, 0x23, 0x6a, 0xfc, 0x80, 0xdf, 0x9e, 0x4c, 0x35, 0x36, 0xf, 0xf8, 0xf3, 0x5f, 0xae, 0xad, 0xb, 0xc1, 0x51, 0x8e, 0x17, 0x7, 0xe5, 0x7f, 0x91}}
return a, nil
}
@@ -393,7 +394,7 @@ func _1597322655_add_invitation_admin_chat_fieldUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x7a, 0xa0, 0xf2, 0xdb, 0x13, 0x91, 0x91, 0xa8, 0x34, 0x1a, 0xa1, 0x49, 0x68, 0xd5, 0xae, 0x2c, 0xd8, 0xd5, 0xea, 0x8f, 0x8c, 0xc7, 0x2, 0x4e, 0x58, 0x2c, 0x3a, 0x14, 0xd4, 0x4f, 0x2c}}
return a, nil
}
@@ -413,7 +414,7 @@ func _1597757544_add_nicknameUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa2, 0x64, 0x50, 0xc5, 0x4, 0xb9, 0x8b, 0xd1, 0x18, 0x9b, 0xc3, 0x91, 0x36, 0x2a, 0x1f, 0xc3, 0x6c, 0x2d, 0x92, 0xf8, 0x5e, 0xff, 0xb1, 0x59, 0x61, 0x2, 0x1c, 0xe1, 0x85, 0x90, 0xa4}}
return a, nil
}
@@ -433,7 +434,7 @@ func _1598955122_add_mentionsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8d, 0x22, 0x17, 0x92, 0xd2, 0x11, 0x4e, 0x7, 0x93, 0x9a, 0x55, 0xfd, 0xb, 0x97, 0xc4, 0x63, 0x6a, 0x81, 0x97, 0xcd, 0xb2, 0xf8, 0x4b, 0x5f, 0x3c, 0xfa, 0x3a, 0x38, 0x53, 0x10, 0xed, 0x9d}}
return a, nil
}
@@ -453,7 +454,7 @@ func _1599641390_add_emoji_reactions_indexUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xd8, 0xdc, 0xa7, 0xb, 0x92, 0x7a, 0x61, 0x37, 0x24, 0x1c, 0x77, 0x5e, 0xe, 0x7e, 0xfc, 0x9f, 0x98, 0x7b, 0x65, 0xe7, 0xf9, 0x71, 0x57, 0x89, 0x2d, 0x90, 0x1b, 0xf6, 0x5e, 0x37, 0xe8}}
return a, nil
}
@@ -473,7 +474,7 @@ func _1599720851_add_seen_index_remove_long_messagesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x24, 0x1c, 0xc4, 0x78, 0x91, 0xc7, 0xeb, 0xfe, 0xc8, 0xa0, 0xd8, 0x13, 0x27, 0x97, 0xc8, 0x96, 0x56, 0x97, 0x33, 0x2c, 0x1e, 0x16, 0x8a, 0xd3, 0x49, 0x99, 0x3, 0xe9, 0xbb, 0xc4, 0x5, 0x3c}}
return a, nil
}
@@ -493,7 +494,7 @@ func _1603198582_add_profile_chat_fieldUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0xca, 0xe, 0x46, 0xa0, 0x9, 0x9d, 0x47, 0x57, 0xe9, 0xfb, 0x17, 0xeb, 0x9c, 0xf6, 0xb8, 0x1d, 0xe9, 0xd, 0x0, 0xd5, 0xe5, 0xd8, 0x9e, 0x60, 0xa, 0xbf, 0x32, 0x2c, 0x52, 0x7f, 0x6a}}
return a, nil
}
@@ -513,7 +514,7 @@ func _1603816533_add_linksUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x24, 0xd6, 0x1d, 0xa, 0x83, 0x1e, 0x4d, 0xf, 0xae, 0x4d, 0x8c, 0x51, 0x32, 0xa8, 0x37, 0xb0, 0x14, 0xfb, 0x32, 0x34, 0xc8, 0xc, 0x4e, 0x5b, 0xc5, 0x15, 0x65, 0x73, 0x0, 0x0, 0x1d}}
return a, nil
}
@@ -533,7 +534,7 @@ func _1603888149_create_chat_identity_last_published_tableUpSql() (*asset, error
return nil, err
}
- info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7f, 0x9, 0xf, 0xfb, 0xdb, 0x3c, 0x86, 0x70, 0x82, 0xda, 0x10, 0x25, 0xe2, 0x4e, 0x40, 0x45, 0xab, 0x8b, 0x1c, 0x91, 0x7c, 0xf1, 0x70, 0x2e, 0x81, 0xf3, 0x71, 0x45, 0xda, 0xe2, 0xa4, 0x57}}
return a, nil
}
@@ -553,7 +554,7 @@ func _1605075346_add_communitiesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1f, 0x64, 0xea, 0xb4, 0xae, 0x9e, 0xdb, 0x9, 0x58, 0xb6, 0x5c, 0x7a, 0x50, 0xc5, 0xfe, 0x93, 0x5d, 0x36, 0x85, 0x5d, 0x6a, 0xba, 0xc9, 0x7e, 0x84, 0xd7, 0xbf, 0x2a, 0x53, 0xf3, 0x97, 0xf1}}
return a, nil
}
@@ -573,7 +574,7 @@ func _1610117927_add_message_cacheUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xf1, 0xf0, 0x82, 0x79, 0x28, 0x19, 0xc2, 0x39, 0x6a, 0xa5, 0x96, 0x59, 0x23, 0xa0, 0xed, 0x60, 0x58, 0x86, 0x9, 0xb9, 0xad, 0xfb, 0xa, 0xe3, 0x47, 0x6e, 0xa1, 0x18, 0xe8, 0x39, 0x2c}}
return a, nil
}
@@ -593,7 +594,7 @@ func _1610959908_add_dont_wrap_to_raw_messagesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0x2, 0x9a, 0xca, 0xd4, 0x38, 0x44, 0x30, 0x2b, 0xa8, 0x27, 0x32, 0x63, 0x53, 0x22, 0x60, 0x59, 0x84, 0x23, 0x96, 0x77, 0xf0, 0x56, 0xd7, 0x94, 0xe0, 0x95, 0x28, 0x6, 0x1d, 0x4e, 0xb1}}
return a, nil
}
@@ -613,7 +614,7 @@ func _1610960912_add_send_on_personal_topicUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0xac, 0x2f, 0xc4, 0xd, 0xa7, 0x1b, 0x37, 0x30, 0xc2, 0x68, 0xee, 0xde, 0x54, 0x5e, 0xbf, 0x3f, 0xa0, 0xd6, 0xc6, 0x9f, 0xd4, 0x34, 0x12, 0x76, 0x1e, 0x66, 0x4a, 0xfc, 0xf, 0xee, 0xc9}}
return a, nil
}
@@ -633,7 +634,7 @@ func _1612870480_add_datasync_idUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0x9a, 0xbc, 0xfa, 0xaa, 0x8c, 0x9c, 0x37, 0x67, 0x15, 0x9c, 0x7e, 0x78, 0x75, 0x66, 0x82, 0x18, 0x72, 0x10, 0xbc, 0xd4, 0xab, 0x44, 0xfe, 0x57, 0x85, 0x6d, 0x19, 0xf5, 0x96, 0x8a, 0xbe}}
return a, nil
}
@@ -653,7 +654,7 @@ func _1614152139_add_communities_request_to_joinUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0x3, 0x26, 0xf9, 0x29, 0x50, 0x4f, 0xcd, 0x46, 0xe5, 0xb1, 0x6b, 0xb9, 0x2, 0x40, 0xb1, 0xdf, 0x4a, 0x4c, 0x7a, 0xda, 0x3, 0x35, 0xcd, 0x2d, 0xcc, 0x80, 0x7d, 0x57, 0x5f, 0x3, 0x5c}}
return a, nil
}
@@ -673,7 +674,7 @@ func _1615374373_add_confirmationsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdd, 0xa6, 0x65, 0xc5, 0x1d, 0xb2, 0x77, 0x36, 0xe3, 0x79, 0xda, 0xe8, 0x7a, 0xa4, 0xdf, 0x45, 0xae, 0xd8, 0xb4, 0xba, 0x90, 0xfd, 0x74, 0x71, 0x14, 0x75, 0x73, 0x72, 0xb9, 0x9e, 0x1, 0x81}}
return a, nil
}
@@ -693,7 +694,7 @@ func _1617694931_add_notification_centerUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x45, 0xc6, 0xc9, 0x73, 0xbb, 0x1f, 0xda, 0xa3, 0x4d, 0x19, 0x98, 0x85, 0x2d, 0xca, 0xda, 0xcc, 0x3b, 0x32, 0xff, 0xc7, 0x7b, 0xe3, 0x9f, 0x9b, 0x2a, 0x93, 0xf5, 0xdf, 0x65, 0x38, 0x91}}
return a, nil
}
@@ -713,7 +714,7 @@ func _1618923660_create_pin_messagesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x61, 0x44, 0x3a, 0xbe, 0x30, 0xd2, 0x7e, 0xc0, 0xe2, 0x8e, 0x65, 0x53, 0x54, 0xbb, 0x7a, 0x1c, 0xb3, 0x5d, 0xd2, 0xa6, 0xa9, 0x28, 0xb7, 0xa4, 0x5f, 0x8b, 0x9, 0x5f, 0x17, 0xc1, 0x85, 0x21}}
return a, nil
}
@@ -733,7 +734,7 @@ func _1619094007_add_joined_chat_fieldUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x30, 0x81, 0x3a, 0x2f, 0x9f, 0xb3, 0x0, 0x55, 0x8e, 0x1d, 0xa8, 0xb0, 0x68, 0xf0, 0x40, 0x1a, 0x6c, 0xaa, 0xfc, 0x33, 0xd1, 0xd1, 0x55, 0x3f, 0xf2, 0xbd, 0x54, 0xa1, 0x2b, 0x40, 0x95}}
return a, nil
}
@@ -753,7 +754,7 @@ func _1619099821_add_last_synced_fieldUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x52, 0x22, 0xe, 0x2f, 0xd7, 0x93, 0x5f, 0x42, 0xc2, 0x93, 0x4, 0x35, 0x6f, 0xc9, 0x19, 0xed, 0x6b, 0x52, 0x6f, 0xae, 0x99, 0xe2, 0x68, 0x3d, 0x4f, 0x40, 0xe, 0xe1, 0xa, 0x47, 0x21}}
return a, nil
}
@@ -773,7 +774,7 @@ func _1621933219_add_mentionedUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x76, 0x8a, 0xc9, 0x7, 0x8f, 0xa5, 0xcb, 0x12, 0x21, 0x4e, 0xfe, 0x96, 0x77, 0xcf, 0x7f, 0x76, 0x75, 0x36, 0x2c, 0xf8, 0x1d, 0x13, 0xcb, 0xcd, 0x6e, 0x70, 0xbf, 0xf5, 0x93, 0x67, 0xd1}}
return a, nil
}
@@ -793,7 +794,7 @@ func _1622010048_add_unviewed_mentions_countUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7c, 0x16, 0x85, 0xa6, 0x5b, 0xe1, 0x66, 0xb9, 0x84, 0xbe, 0x7f, 0xa, 0x77, 0x23, 0xb9, 0xef, 0x8e, 0x2, 0x8, 0xfc, 0x61, 0xb2, 0x43, 0xa9, 0x63, 0xae, 0xb4, 0xdf, 0x30, 0xb1, 0x61, 0x4b}}
return a, nil
}
@@ -813,7 +814,7 @@ func _1622061278_add_message_activity_center_notification_fieldUpSql() (*asset,
return nil, err
}
- info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8, 0xc, 0xa6, 0x1f, 0xa5, 0xc6, 0x7c, 0x6f, 0xab, 0x2c, 0x2d, 0xb5, 0xa4, 0xdd, 0xc1, 0xd6, 0x44, 0x83, 0xf9, 0xb1, 0xa5, 0xce, 0x34, 0x3d, 0x2, 0xa9, 0x35, 0xcf, 0xc6, 0xb2, 0x43, 0x37}}
return a, nil
}
@@ -833,7 +834,7 @@ func _1622464518_set_synced_to_fromUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x33, 0x3e, 0x2b, 0xa, 0x1e, 0xc7, 0x6d, 0x6f, 0xd1, 0x1d, 0xe8, 0x4b, 0xdd, 0x92, 0x76, 0xea, 0xf2, 0x3e, 0x15, 0x85, 0xc4, 0xc3, 0x31, 0xf1, 0xc0, 0xa2, 0xd7, 0x47, 0xde, 0x4e, 0xfd, 0xc6}}
return a, nil
}
@@ -853,7 +854,7 @@ func _1622464519_add_chat_descriptionUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x2e, 0x89, 0x31, 0xec, 0xef, 0xeb, 0x43, 0xf5, 0x96, 0x6d, 0xce, 0x91, 0x8a, 0x37, 0x2a, 0x11, 0x7a, 0x3f, 0xd9, 0x10, 0xbb, 0xa1, 0xbc, 0x7, 0xe0, 0x3b, 0xa5, 0xf4, 0xa6, 0xf4, 0xa1}}
return a, nil
}
@@ -873,7 +874,7 @@ func _1622622253_add_pinned_by_to_pin_messagesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9b, 0x94, 0xa3, 0x45, 0x91, 0x1e, 0x66, 0xd1, 0x96, 0x5a, 0xaf, 0xfa, 0x29, 0x39, 0xa8, 0x3a, 0x97, 0x4c, 0x65, 0x6, 0x96, 0x90, 0x4c, 0xfe, 0xce, 0x7d, 0x5d, 0xd4, 0xb3, 0x8, 0x6d, 0x5f}}
return a, nil
}
@@ -893,7 +894,7 @@ func _1623938329_add_author_activity_center_notification_fieldUpSql() (*asset, e
return nil, err
}
- info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0xe6, 0xa7, 0xd5, 0x26, 0xff, 0xab, 0x92, 0x88, 0xf0, 0xd3, 0x34, 0xd9, 0x2f, 0xe7, 0x18, 0x1a, 0x40, 0xf9, 0xbe, 0x8e, 0xfc, 0xd0, 0x4f, 0x1f, 0x4a, 0xb9, 0x83, 0x3f, 0xa9, 0xde, 0xb}}
return a, nil
}
@@ -913,7 +914,7 @@ func _1623938330_add_edit_messagesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xd2, 0xce, 0xe, 0x5c, 0x19, 0xbe, 0x5e, 0x29, 0xbe, 0x9b, 0x31, 0x53, 0x76, 0xb2, 0xc8, 0x56, 0xf0, 0x82, 0xfe, 0x7d, 0x6c, 0xe8, 0x5c, 0xe9, 0x7a, 0x5d, 0x5, 0xc4, 0x92, 0x38, 0xe3}}
return a, nil
}
@@ -933,7 +934,7 @@ func _1624978434_add_muted_communityUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0xdc, 0x6e, 0x6f, 0x97, 0xc7, 0x3d, 0x50, 0xab, 0x80, 0x87, 0x44, 0x43, 0x38, 0xe6, 0xc5, 0xc1, 0x91, 0x26, 0xf, 0x16, 0xe, 0xd9, 0x32, 0x37, 0x25, 0x96, 0x25, 0x6, 0xc8, 0xb5, 0x4a}}
return a, nil
}
@@ -953,7 +954,7 @@ func _1625018910_add_repply_message_activity_center_notification_fieldUpSql() (*
return nil, err
}
- info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf2, 0x52, 0x12, 0x40, 0xd8, 0x6f, 0x71, 0x97, 0x46, 0x39, 0xaa, 0x74, 0x41, 0xcd, 0x45, 0x4c, 0xe8, 0xd9, 0xe2, 0x56, 0x8e, 0x78, 0x18, 0x62, 0xf6, 0xa8, 0x36, 0xe9, 0x9a, 0x1f, 0xc, 0xb1}}
return a, nil
}
@@ -973,7 +974,7 @@ func _1625762506_add_deleted_messagesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x61, 0x42, 0xb6, 0x8c, 0x7f, 0x2d, 0xec, 0xa9, 0x6d, 0x3d, 0x0, 0xa3, 0x32, 0xd8, 0x4a, 0x38, 0x5c, 0x97, 0xfc, 0x68, 0xde, 0xa9, 0xb7, 0xd8, 0xde, 0xb, 0x29, 0x93, 0xdc, 0x81, 0xf8}}
return a, nil
}
@@ -993,7 +994,7 @@ func _1627388946_add_communities_synced_atUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc1, 0xbd, 0x9b, 0x6a, 0xc9, 0x1a, 0x7a, 0x34, 0xcf, 0x5f, 0x80, 0x9e, 0x8c, 0x1c, 0xc0, 0xec, 0x4e, 0x78, 0xb0, 0x2d, 0x15, 0x77, 0x38, 0x4a, 0x6a, 0x5, 0x84, 0xf5, 0x8d, 0x8b, 0xbe, 0x9}}
return a, nil
}
@@ -1013,7 +1014,7 @@ func _1628280060_createUsermessagesIndexSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x6f, 0x70, 0x47, 0x40, 0xab, 0xa8, 0x60, 0xe0, 0xf9, 0x8, 0x7e, 0x19, 0x9d, 0xba, 0x33, 0x16, 0xfc, 0x3c, 0xdc, 0xa8, 0xa6, 0x53, 0x61, 0x39, 0x82, 0x91, 0xcf, 0x69, 0xd8, 0xf2, 0xcf}}
return a, nil
}
@@ -1033,7 +1034,7 @@ func _1632303896_modify_contacts_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x1e, 0x6c, 0x3c, 0xd, 0xd7, 0x7d, 0xbb, 0x19, 0xbc, 0xe4, 0x7, 0xfd, 0xf8, 0x66, 0x6d, 0x78, 0xf6, 0x4, 0xe6, 0x51, 0xe4, 0xe6, 0xdc, 0xe, 0x5a, 0x2e, 0xac, 0xe6, 0xe7, 0x24, 0x69}}
return a, nil
}
@@ -1053,7 +1054,7 @@ func _1633349838_add_emoji_column_in_chatsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x33, 0xcb, 0x3b, 0xa9, 0x99, 0x77, 0x6a, 0xea, 0xc4, 0x39, 0xd7, 0xa1, 0x49, 0xa7, 0xdf, 0xff, 0x72, 0xda, 0x34, 0x21, 0x67, 0x66, 0xca, 0x65, 0x46, 0x1, 0xa6, 0x4e, 0xf9, 0x38, 0x86}}
return a, nil
}
@@ -1073,7 +1074,7 @@ func _1634831235_add_highlight_column_in_chatsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0x63, 0x5c, 0x73, 0x19, 0x83, 0xbd, 0x35, 0x80, 0x9f, 0x66, 0xec, 0x4c, 0xbc, 0x9d, 0x2d, 0x52, 0x91, 0x6d, 0xb3, 0x2b, 0x87, 0xde, 0x24, 0x46, 0x5c, 0xd, 0xfd, 0x78, 0xf5, 0xe3, 0xe9}}
return a, nil
}
@@ -1093,7 +1094,7 @@ func _1634896007_add_last_updated_locally_and_removedUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0xa8, 0x34, 0xe2, 0xc0, 0x62, 0xc8, 0xd6, 0x5a, 0x87, 0xe3, 0x70, 0xe1, 0xc4, 0x16, 0x9c, 0x60, 0x2e, 0x98, 0xf0, 0x91, 0x84, 0xbe, 0xe0, 0xdf, 0x3e, 0x4d, 0x24, 0xc4, 0x6c, 0x40, 0x17}}
return a, nil
}
@@ -1113,7 +1114,7 @@ func _1635840039_add_clock_read_at_column_in_chatsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6c, 0xba, 0x3f, 0xba, 0x1a, 0x71, 0xa8, 0x9, 0x19, 0xbe, 0x1e, 0x38, 0x50, 0x30, 0x3a, 0x52, 0x15, 0x29, 0xee, 0x49, 0x19, 0x6f, 0x53, 0xc2, 0xc6, 0x6c, 0xd9, 0x80, 0x7e, 0xb9, 0x58, 0x7a}}
return a, nil
}
@@ -1133,7 +1134,7 @@ func _1637852321_add_received_invitation_admin_column_in_chatsUpSql() (*asset, e
return nil, err
}
- info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x70, 0x8b, 0x92, 0x56, 0x83, 0x70, 0x7f, 0x6, 0xb2, 0xd, 0x1c, 0x2f, 0xcc, 0x93, 0xc3, 0x85, 0x8c, 0xc2, 0x38, 0x94, 0x7e, 0x88, 0x3f, 0x39, 0x34, 0xf8, 0x90, 0xcf, 0x83, 0x68, 0x3d, 0xe5}}
return a, nil
}
@@ -1153,7 +1154,7 @@ func _1645034601_display_nameUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x15, 0xfc, 0xda, 0x70, 0x53, 0x19, 0x90, 0x20, 0x4, 0x1c, 0x99, 0x42, 0x53, 0x1a, 0xd6, 0xb8, 0xbb, 0x8a, 0xe8, 0xbe, 0xcc, 0xb7, 0xc, 0x7f, 0x73, 0x50, 0x18, 0xf1, 0x8b, 0x18, 0x54, 0x64}}
return a, nil
}
@@ -1173,7 +1174,7 @@ func _1645034602_add_mutual_contact_requestUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0xe0, 0x5d, 0x68, 0xb8, 0x50, 0xa4, 0xbb, 0x3e, 0x4f, 0x2, 0x87, 0xad, 0x87, 0x6e, 0x38, 0xdf, 0xc8, 0x4c, 0xe2, 0x5f, 0xd1, 0x6, 0xdc, 0xe7, 0xbd, 0x4a, 0x9c, 0xf3, 0x91, 0xa1, 0x51}}
return a, nil
}
@@ -1193,7 +1194,7 @@ func _1650373957_add_contact_request_stateUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xc1, 0x3f, 0x29, 0xe, 0x19, 0x86, 0x1a, 0x4c, 0x6c, 0x2a, 0x90, 0x9d, 0xdf, 0xb1, 0xb, 0x72, 0x25, 0xcd, 0x6c, 0x5f, 0xd, 0x51, 0x9e, 0x85, 0xc0, 0x9, 0xb7, 0xbc, 0x87, 0x23, 0xec}}
return a, nil
}
@@ -1213,7 +1214,7 @@ func _1656958989_contact_verificationUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3a, 0x3f, 0x28, 0x38, 0x33, 0xdb, 0xe9, 0x4d, 0xc0, 0x54, 0x8c, 0x2a, 0x73, 0xc4, 0xdd, 0x5c, 0xc5, 0x1a, 0x93, 0x4b, 0x6, 0x13, 0xbe, 0x42, 0xd2, 0x7f, 0xd4, 0xc, 0xc5, 0x4e, 0x6d, 0xce}}
return a, nil
}
@@ -1233,7 +1234,7 @@ func _1658236268_add_discord_message_authors_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0xb7, 0xdb, 0x79, 0x1, 0x15, 0xe7, 0x76, 0x5d, 0x22, 0x54, 0x82, 0x9a, 0xbe, 0x24, 0xc1, 0x82, 0xcf, 0x67, 0x91, 0x53, 0xcc, 0xac, 0x74, 0x18, 0x61, 0x69, 0x68, 0x19, 0xca, 0x2b, 0xa8}}
return a, nil
}
@@ -1253,7 +1254,7 @@ func _1659619997_add_discord_messages_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x12, 0x9c, 0x96, 0xe2, 0x42, 0x3f, 0x94, 0x62, 0xc2, 0x76, 0xab, 0x3b, 0x4c, 0x85, 0x36, 0x48, 0xcc, 0x73, 0x60, 0x93, 0x5a, 0xd6, 0x7, 0xd6, 0x0, 0xee, 0x1b, 0x1e, 0x34, 0x58, 0x99}}
return a, nil
}
@@ -1273,7 +1274,7 @@ func _1660226788_create_chat_identity_social_linksUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0x76, 0x40, 0xe9, 0x85, 0xc4, 0x38, 0xf8, 0xe5, 0x5d, 0xe8, 0x13, 0x46, 0x1b, 0xc, 0x1, 0xe9, 0x2f, 0x74, 0xd1, 0x79, 0x59, 0xa4, 0xdb, 0x4a, 0x4a, 0xf4, 0x98, 0x58, 0x3c, 0x57, 0xd3}}
return a, nil
}
@@ -1293,7 +1294,7 @@ func _1660226789_add_walletconnectsessions_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf8, 0x5c, 0x72, 0x2, 0xed, 0x36, 0x19, 0x91, 0x4d, 0x1a, 0xc1, 0xab, 0x84, 0xfa, 0x41, 0xb1, 0x46, 0xa5, 0xdb, 0x3f, 0x76, 0x47, 0xd3, 0x75, 0x3c, 0x6a, 0x8e, 0x78, 0xe6, 0x41, 0xdc, 0x7f}}
return a, nil
}
@@ -1313,7 +1314,7 @@ func _1661242854_add_communities_requests_to_leaveUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x2e, 0x7d, 0x14, 0xef, 0x6e, 0x95, 0x4b, 0x6, 0x70, 0x2e, 0xd1, 0xf6, 0x59, 0xf9, 0xe, 0x56, 0xa, 0x9c, 0x80, 0x18, 0xca, 0xb9, 0x49, 0x19, 0xf, 0x89, 0x94, 0x36, 0x6d, 0x93, 0x9a}}
return a, nil
}
@@ -1333,7 +1334,7 @@ func _1662044232_add_chat_imageUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1663587122, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x74, 0xdf, 0x50, 0x79, 0x73, 0x9e, 0xd0, 0xff, 0xa4, 0xd3, 0x87, 0xc3, 0x48, 0x31, 0x6c, 0xdf, 0xa6, 0x20, 0x85, 0xe6, 0x4e, 0x19, 0x9d, 0xef, 0xcc, 0x84, 0x2b, 0x5d, 0x44, 0x34, 0x6}}
return a, nil
}
@@ -1353,7 +1354,7 @@ func _1662106895_add_chat_first_message_timestampUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0644), modTime: time.Unix(1663587122, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8b, 0x55, 0x74, 0xfa, 0xf5, 0x51, 0x85, 0x19, 0xfd, 0xfb, 0x6, 0x79, 0x4d, 0x1d, 0xd, 0x3, 0x46, 0x66, 0x34, 0x1e, 0xce, 0x91, 0x21, 0x29, 0xf6, 0x71, 0xe7, 0x31, 0x39, 0x8f, 0x9d, 0x5}}
return a, nil
}
@@ -1373,7 +1374,7 @@ func _1662723928_add_discord_author_image_fieldsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1664307594, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0x5b, 0x48, 0x57, 0x98, 0x55, 0x9a, 0xf1, 0x75, 0xf7, 0xb5, 0x41, 0x5e, 0x96, 0xc5, 0xce, 0xfc, 0x30, 0x5c, 0x15, 0x35, 0x9e, 0x4e, 0x4a, 0x3b, 0x38, 0x42, 0xc4, 0x27, 0x3c, 0x87, 0xbf}}
return a, nil
}
@@ -1393,7 +1394,7 @@ func _1664195977_add_deleted_for_mesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0644), modTime: time.Unix(1664889752, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7d, 0x9d, 0x13, 0x9, 0xaa, 0x44, 0x14, 0x93, 0xe2, 0xf5, 0x53, 0xb7, 0x79, 0xa8, 0x18, 0xf0, 0x6c, 0xa4, 0x9c, 0x73, 0xc1, 0xaa, 0xc5, 0x2e, 0xc5, 0x41, 0xd7, 0x24, 0xb0, 0xd7, 0xb8, 0xdf}}
return a, nil
}
@@ -1413,7 +1414,7 @@ func _1664367420_add_discord_attachments_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0644), modTime: time.Unix(1664889752, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0xe1, 0xb6, 0x4f, 0x6f, 0x92, 0x0, 0xb4, 0xf, 0x55, 0x12, 0x1c, 0x98, 0x6d, 0xbc, 0x1e, 0xfd, 0xae, 0x1c, 0xce, 0xd1, 0x3d, 0x2, 0x21, 0x2e, 0xc0, 0x13, 0xa, 0xb2, 0xec, 0x81, 0x13}}
return a, nil
}
@@ -1433,7 +1434,7 @@ func _1665079662_add_spectated_column_in_communitiesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1666188919, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0x5d, 0xfe, 0xe2, 0xbe, 0xdf, 0xba, 0x45, 0xe9, 0xfc, 0xa7, 0x5f, 0xda, 0x19, 0xdb, 0x40, 0x96, 0x59, 0x78, 0xa, 0xd7, 0x4a, 0xca, 0x1a, 0x93, 0xfb, 0xae, 0x6d, 0x74, 0x7, 0x36, 0xdd}}
return a, nil
}
@@ -1453,7 +1454,7 @@ func _1665479047_add_community_id_in_notificationsUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1666958301, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd9, 0x8f, 0x8b, 0x1c, 0xaa, 0x6a, 0x56, 0xd6, 0xa5, 0x88, 0x57, 0x13, 0x8f, 0xea, 0xb9, 0x23, 0x82, 0x50, 0xb7, 0x65, 0x1f, 0xab, 0xfa, 0x23, 0x6f, 0x0, 0x7, 0xb6, 0x6e, 0xb5, 0x85, 0x44}}
return a, nil
}
@@ -1473,7 +1474,7 @@ func _1665484435_add_encrypted_messagesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0644), modTime: time.Unix(1666958301, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0x5c, 0x1e, 0x1c, 0x7f, 0xae, 0x5f, 0xeb, 0x3c, 0x6c, 0xcd, 0xc2, 0x99, 0x48, 0x5c, 0x83, 0xa0, 0xa2, 0x97, 0x5, 0x39, 0x82, 0x71, 0x90, 0x47, 0x21, 0x84, 0x29, 0x19, 0xa4, 0x7a, 0x90}}
return a, nil
}
@@ -1493,7 +1494,7 @@ func _1665560200_add_contact_verification_individualUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0644), modTime: time.Unix(1669387830, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc5, 0xbb, 0x61, 0xfd, 0xbf, 0x33, 0x1d, 0x4e, 0x5f, 0xbd, 0x86, 0x42, 0xb0, 0x6c, 0xf7, 0x39, 0x19, 0x6e, 0x72, 0x35, 0xfd, 0x1b, 0xd6, 0xbd, 0xf6, 0x81, 0x21, 0xc4, 0xaa, 0x6, 0x62, 0x40}}
return a, nil
}
@@ -1513,7 +1514,7 @@ func _1670921937_add_album_idUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1673009770, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xae, 0x83, 0x58, 0xb7, 0x77, 0x5, 0xca, 0xe3, 0xda, 0x32, 0x8f, 0x7b, 0xa4, 0x2f, 0x4c, 0xaf, 0x5f, 0xfa, 0x94, 0x36, 0xe4, 0xf9, 0x7, 0xc6, 0xd6, 0xb7, 0x90, 0xf3, 0xe5, 0xb5, 0x3}}
return a, nil
}
@@ -1533,7 +1534,7 @@ func _1673373000_add_repliedUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x1c, 0xae, 0xf2, 0xf, 0xb4, 0xc2, 0xba, 0x3c, 0xfe, 0x7b, 0xb0, 0xf, 0xf, 0xd5, 0xbc, 0xe2, 0xa7, 0xad, 0x50, 0xd9, 0x5a, 0xe8, 0x96, 0x22, 0x65, 0x89, 0xcf, 0x4a, 0x9a, 0x1b, 0x94}}
return a, nil
}
@@ -1553,7 +1554,7 @@ func _1673428910_add_image_width_heightUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x74, 0xda, 0x93, 0x2a, 0x9b, 0x6b, 0xb7, 0x96, 0xcd, 0xac, 0xf, 0xaf, 0x54, 0x89, 0x9e, 0x91, 0x5b, 0xd0, 0x4a, 0xa, 0x8d, 0x9e, 0x80, 0x66, 0x26, 0x9e, 0xb5, 0xa9, 0x8, 0xec, 0x2d, 0x6c}}
return a, nil
}
@@ -1573,7 +1574,7 @@ func _1674210659_add_contact_request_local_clockUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0644), modTime: time.Unix(1675323904, 0)}
+ info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x92, 0x72, 0x39, 0xfe, 0x72, 0x98, 0xfc, 0x91, 0x20, 0x10, 0xe8, 0xf5, 0xac, 0x79, 0xa8, 0x1c, 0xca, 0x7b, 0x35, 0xa, 0xc1, 0x56, 0x49, 0x9a, 0xfc, 0xbd, 0x64, 0x9d, 0xdf, 0xd2, 0x60, 0x70}}
return a, nil
}
@@ -1593,7 +1594,7 @@ func _1675212323_add_deleted_byUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1675323904, 0)}
+ info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x85, 0x37, 0x29, 0x2f, 0xd, 0x5a, 0xb6, 0xdb, 0xa7, 0x8, 0x86, 0xfc, 0x7a, 0x70, 0xd8, 0x4d, 0xe6, 0xf0, 0x57, 0xe7, 0xd1, 0x95, 0xd5, 0x4, 0x40, 0x2f, 0x7a, 0x5, 0x4f, 0xc2, 0x97, 0xbc}}
return a, nil
}
@@ -1613,7 +1614,7 @@ func _1675247084_add_activity_center_statesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1677122376, 0)}
+ info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xba, 0x90, 0x7d, 0x55, 0xc7, 0x40, 0x29, 0x26, 0x97, 0x45, 0x5c, 0xdf, 0xba, 0x61, 0xb, 0xfc, 0x3d, 0x7a, 0x6c, 0x42, 0xe4, 0x95, 0x78, 0xb0, 0xc5, 0x1f, 0x73, 0xe9, 0x33, 0x51, 0xc8, 0x81}}
return a, nil
}
@@ -1633,7 +1634,7 @@ func _1675272329_fix_protocol_migrationUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0644), modTime: time.Unix(1675323904, 0)}
+ info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0xe0, 0x11, 0x4c, 0x66, 0x55, 0x72, 0xd3, 0xe6, 0x98, 0xa4, 0xe7, 0x44, 0xf9, 0x3b, 0x3a, 0x3f, 0xd9, 0x91, 0x1e, 0x4f, 0xfc, 0x56, 0x63, 0xe5, 0xa4, 0x83, 0xfc, 0x7c, 0xcf, 0x18, 0x99}}
return a, nil
}
@@ -1653,7 +1654,7 @@ func _1676998418_fix_activity_center_migrationUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1677468108, 0)}
+ info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8a, 0xdc, 0x64, 0xb1, 0x47, 0x67, 0xda, 0x2c, 0x26, 0x29, 0x6b, 0x6f, 0xb, 0xfa, 0x45, 0xf3, 0xad, 0x8b, 0x1a, 0x5f, 0x1c, 0xed, 0xd7, 0xea, 0x54, 0xf5, 0x3f, 0xb8, 0xf6, 0xf9, 0x44, 0x53}}
return a, nil
}
@@ -1673,7 +1674,7 @@ func _1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql(
return nil, err
}
- info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0644), modTime: time.Unix(1677468108, 0)}
+ info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x38, 0x3a, 0x95, 0xaf, 0x81, 0xb0, 0x85, 0x8d, 0x73, 0xda, 0x7b, 0x2a, 0x35, 0xa6, 0xaa, 0xcc, 0x4c, 0x35, 0xa3, 0xa8, 0xbd, 0xd1, 0x37, 0xe8, 0x5d, 0x83, 0xa4, 0x33, 0x1f, 0x10, 0xe4, 0xe6}}
return a, nil
}
@@ -1693,7 +1694,7 @@ func _1677486338_add_community_tokens_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0644), modTime: time.Unix(1677564198, 0)}
+ info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0644), modTime: time.Unix(1678807591, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfb, 0x7b, 0x3d, 0x7e, 0x79, 0xc4, 0x3a, 0xf1, 0xda, 0x4b, 0xc6, 0xd1, 0xd, 0xfb, 0xb2, 0xb9, 0x7f, 0x81, 0x29, 0xab, 0xd8, 0x1, 0x20, 0xd7, 0xe1, 0xaf, 0x3e, 0x67, 0x1b, 0xdb, 0xf9, 0xd5}}
return a, nil
}
@@ -1713,7 +1714,7 @@ func _1678292329_add_collapsed_categoriesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0644), modTime: time.Unix(1679051421, 0)}
+ info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0644), modTime: time.Unix(1679681399, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x46, 0x63, 0x86, 0xd5, 0x7, 0xe2, 0x25, 0x15, 0x1b, 0xfe, 0xf3, 0xe, 0x50, 0x48, 0x11, 0x3c, 0x7c, 0xc6, 0xe5, 0xab, 0x8d, 0x1f, 0xe8, 0x3c, 0xcb, 0xf0, 0x8d, 0xa7, 0x49, 0x4c, 0x16, 0x4f}}
return a, nil
}
@@ -1733,7 +1734,7 @@ func _1678800760_add_index_to_raw_messagesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1679302848, 0)}
+ info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1679681399, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9d, 0xd9, 0x8d, 0x22, 0x46, 0xae, 0x7b, 0x53, 0x3e, 0x51, 0x39, 0xad, 0xad, 0x38, 0x50, 0x6, 0xfa, 0xb9, 0xc4, 0x9f, 0x8d, 0xd2, 0x67, 0x0, 0xef, 0x58, 0x13, 0xab, 0x6a, 0x67, 0xf3, 0x7e}}
return a, nil
}
@@ -1753,7 +1754,7 @@ func _1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql(
return nil, err
}
- info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0644), modTime: time.Unix(1679652393, 0)}
+ info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0644), modTime: time.Unix(1679681399, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x82, 0x1, 0xb4, 0xb2, 0x94, 0x25, 0xd5, 0x2e, 0x45, 0xc3, 0xb1, 0x2c, 0xeb, 0x1a, 0x52, 0xe0, 0x4b, 0x9b, 0x46, 0xf4, 0xc, 0xac, 0x1, 0x1e, 0x90, 0xbc, 0x64, 0x38, 0x10, 0xf1, 0xaf, 0xac}}
return a, nil
}
@@ -1773,7 +1774,7 @@ func _1679326850_add_community_token_ownersUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1680000580, 0)}
+ info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1680619081, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xe6, 0x25, 0x67, 0xd1, 0xd6, 0x54, 0x88, 0xb1, 0x80, 0x1e, 0x2d, 0x9c, 0xfa, 0x1c, 0xc7, 0x63, 0x6e, 0xf9, 0x66, 0xb1, 0x68, 0xc6, 0xf8, 0x51, 0xb6, 0xd5, 0x4e, 0x93, 0x39, 0x5e, 0xc0}}
return a, nil
}
@@ -1793,7 +1794,7 @@ func _1680011500_add_album_images_countUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1680260624, 0)}
+ info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1680619081, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0x55, 0x99, 0x31, 0xcc, 0x80, 0x78, 0xc3, 0x51, 0x13, 0x63, 0x6f, 0x1a, 0xfd, 0x53, 0xd2, 0xf4, 0x13, 0x4b, 0xb2, 0x4f, 0x99, 0xb8, 0x7b, 0x7, 0x99, 0xb6, 0xab, 0x88, 0x2e, 0x7, 0x8}}
return a, nil
}
@@ -1813,7 +1814,7 @@ func _1680114896_add_index_on_album_idUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1680260624, 0)}
+ info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1680619081, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x7e, 0xd5, 0xcd, 0x2d, 0xab, 0xd4, 0x32, 0x26, 0x50, 0x3a, 0x5b, 0x8e, 0x1c, 0xcc, 0x35, 0xf8, 0xa1, 0x2a, 0xc1, 0x23, 0xf6, 0x90, 0xfe, 0x84, 0x3, 0xde, 0x5a, 0xee, 0xc6, 0xfc, 0x2a}}
return a, nil
}
@@ -1833,7 +1834,7 @@ func _1681655289_add_mute_tillUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1681955252, 0)}
+ info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1682559310, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0xbe, 0xce, 0xb8, 0xe1, 0x30, 0xe7, 0xa7, 0xe0, 0x7d, 0x97, 0xf4, 0x26, 0xb8, 0x57, 0x1d, 0x2a, 0xed, 0x18, 0xf2, 0xa, 0xe3, 0x77, 0x29, 0x18, 0x55, 0x9, 0x74, 0x2c, 0x24, 0x5a, 0x19}}
return a, nil
}
@@ -1853,7 +1854,7 @@ func _1681934966_add_index_response_toUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1682560340, 0)}
+ info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1682559310, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3b, 0xed, 0xa6, 0x7e, 0x51, 0xf2, 0xa1, 0x3c, 0x78, 0x9a, 0xa7, 0x7a, 0x51, 0x25, 0x7d, 0xdd, 0x4b, 0xf3, 0x45, 0xeb, 0x3f, 0xad, 0x23, 0x3e, 0xac, 0x16, 0x28, 0x62, 0x7, 0x8c, 0xe0, 0xa0}}
return a, nil
}
@@ -1873,7 +1874,7 @@ func _1682528339_add_index_user_messages_unseenUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1683172161, 0)}
+ info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1683151443, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x35, 0xfa, 0x98, 0xdd, 0x74, 0x5e, 0x21, 0x1f, 0xf2, 0x56, 0x17, 0x96, 0xfe, 0xbb, 0x44, 0x4c, 0xa1, 0xd8, 0x9f, 0x2e, 0x6, 0x2f, 0xd8, 0x23, 0xec, 0x94, 0x8c, 0x53, 0xf3, 0xf0, 0x40, 0xe7}}
return a, nil
}
@@ -1893,7 +1894,7 @@ func _1683707289_recreate_deleted_for_mesUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0644), modTime: time.Unix(1683811675, 0)}
+ info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0644), modTime: time.Unix(1684241835, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5b, 0x9d, 0xd6, 0x45, 0x41, 0x29, 0x44, 0xf6, 0x14, 0x38, 0xeb, 0xdf, 0x6b, 0x5d, 0x9c, 0x45, 0x4b, 0xc3, 0xa8, 0xbd, 0x38, 0x14, 0xd9, 0x73, 0xf1, 0x51, 0xbb, 0x9f, 0x14, 0x36, 0xf2, 0x11}}
return a, nil
}
@@ -1913,11 +1914,31 @@ func _1683725607_mark_discord_messages_as_seenUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1683810836, 0)}
+ info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1684241835, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x2a, 0xc3, 0x43, 0xea, 0x5e, 0x3, 0x2e, 0xce, 0x79, 0xea, 0xa5, 0x67, 0x61, 0x8c, 0xe4, 0xb9, 0xb7, 0x4d, 0xd5, 0xd5, 0xb0, 0x35, 0xc8, 0x2b, 0xa0, 0x3f, 0xd8, 0xde, 0xea, 0x4e, 0x16}}
return a, nil
}
+var __1684174617_add_url_previews_to_user_messagesUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x28\x2d\x4e\x2d\x8a\xcf\x4d\x2d\x2e\x4e\x4c\x4f\x2d\x56\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\x28\xcd\x4b\x2b\x2d\xca\x49\x4d\x89\xcf\xc9\xcc\xcb\x2e\x56\x70\xf2\xf1\x77\xb2\xe6\x02\x04\x00\x00\xff\xff\x02\x1d\x55\x37\x3a\x00\x00\x00")
+
+func _1684174617_add_url_previews_to_user_messagesUpSqlBytes() ([]byte, error) {
+ return bindataRead(
+ __1684174617_add_url_previews_to_user_messagesUpSql,
+ "1684174617_add_url_previews_to_user_messages.up.sql",
+ )
+}
+
+func _1684174617_add_url_previews_to_user_messagesUpSql() (*asset, error) {
+ bytes, err := _1684174617_add_url_previews_to_user_messagesUpSqlBytes()
+ if err != nil {
+ return nil, err
+ }
+
+ info := bindataFileInfo{name: "1684174617_add_url_previews_to_user_messages.up.sql", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1684433994, 0)}
+ a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0xb0, 0x72, 0xe3, 0xe4, 0xa9, 0x63, 0x82, 0xea, 0x52, 0x70, 0xb6, 0xa0, 0x73, 0x55, 0x7a, 0x78, 0xa8, 0xd2, 0xb0, 0xf4, 0x78, 0x8a, 0xd, 0x5a, 0xa2, 0x9d, 0x92, 0xdc, 0xce, 0x1c, 0x71}}
+ return a, nil
+}
+
var _readmeMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x91\xc1\xce\xd3\x30\x10\x84\xef\x7e\x8a\x91\x7a\x01\xa9\x2a\x8f\xc0\x0d\x71\x82\x03\x48\x1c\xc9\x36\x9e\x36\x96\x1c\x6f\xf0\xae\x93\xe6\xed\x91\xa3\xc2\xdf\xff\x66\xed\xd8\x33\xdf\x78\x4f\xa7\x13\xbe\xea\x06\x57\x6c\x35\x39\x31\xa7\x7b\x15\x4f\x5a\xec\x73\x08\xbf\x08\x2d\x79\x7f\x4a\x43\x5b\x86\x17\xfd\x8c\x21\xea\x56\x5e\x47\x90\x4a\x14\x75\x48\xde\x64\x37\x2c\x6a\x96\xae\x99\x48\x05\xf6\x27\x77\x13\xad\x08\xae\x8a\x51\xe7\x25\xf3\xf1\xa9\x9f\xf9\x58\x58\x2c\xad\xbc\xe0\x8b\x56\xf0\x21\x5d\xeb\x4c\x95\xb3\xae\x84\x60\xd4\xdc\xe6\x82\x5d\x1b\x36\x6d\x39\x62\x92\xf5\xb8\x11\xdb\x92\xd3\x28\xce\xe0\x13\xe1\x72\xcd\x3c\x63\xd4\x65\x87\xae\xac\xe8\xc3\x28\x2e\x67\x44\x66\x3a\x21\x25\xa2\x72\xac\x14\x67\xbc\x84\x9f\x53\x32\x8c\x52\x70\x25\x56\xd6\xfd\x8d\x05\x37\xad\x30\x9d\x9f\xa6\x86\x0f\xcd\x58\x7f\xcf\x34\x93\x3b\xed\x90\x9f\xa4\x1f\xcf\x30\x85\x4d\x07\x58\xaf\x7f\x25\xc4\x9d\xf3\x72\x64\x84\xd0\x7f\xf9\x9b\x3a\x2d\x84\xef\x85\x48\x66\x8d\xd8\x88\x9b\x8c\x8c\x98\x5b\xf6\x74\x14\x4e\x33\x0d\xc9\xe0\x93\x38\xda\x12\xc5\x69\xbd\xe4\xf0\x2e\x7a\x78\x07\x1c\xfe\x13\x9f\x91\x29\x31\x95\x7b\x7f\x62\x59\x37\xb4\xe5\x5e\x25\xfe\x33\xee\xd5\x53\x71\xd6\xda\x3a\xd8\xcb\xde\x2e\xf8\xa1\x90\x55\x53\x0c\xc7\xaa\x0d\xe9\x76\x14\x29\x1c\x7b\x68\xdd\x2f\xe1\x6f\x00\x00\x00\xff\xff\x3c\x0a\xc2\xfe\x2a\x02\x00\x00")
func readmeMdBytes() ([]byte, error) {
@@ -1933,7 +1954,7 @@ func readmeMd() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1c, 0x6e, 0xfb, 0xcc, 0x81, 0x94, 0x4d, 0x8c, 0xa0, 0x3b, 0x5, 0xb0, 0x18, 0xd6, 0xbb, 0xb3, 0x79, 0xc8, 0x8f, 0xff, 0xc1, 0x10, 0xf9, 0xf, 0x20, 0x1b, 0x4a, 0x74, 0x96, 0x42, 0xd7, 0xa8}}
return a, nil
}
@@ -1953,7 +1974,7 @@ func docGo() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0xcc, 0x41, 0xe1, 0x61, 0x12, 0x97, 0xe, 0x36, 0x8c, 0xa7, 0x9e, 0xe0, 0x6e, 0x59, 0x9e, 0xee, 0xd5, 0x4a, 0xcf, 0x1e, 0x60, 0xd6, 0xc3, 0x3a, 0xc9, 0x6c, 0xf2, 0x86, 0x5a, 0xb4, 0x1e}}
return a, nil
}
@@ -2225,6 +2246,8 @@ var _bindata = map[string]func() (*asset, error){
"1683725607_mark_discord_messages_as_seen.up.sql": _1683725607_mark_discord_messages_as_seenUpSql,
+ "1684174617_add_url_previews_to_user_messages.up.sql": _1684174617_add_url_previews_to_user_messagesUpSql,
+
"README.md": readmeMd,
"doc.go": docGo,
@@ -2359,6 +2382,7 @@ var _bintree = &bintree{nil, map[string]*bintree{
"1682528339_add_index_user_messages_unseen.up.sql": &bintree{_1682528339_add_index_user_messages_unseenUpSql, map[string]*bintree{}},
"1683707289_recreate_deleted_for_mes.up.sql": &bintree{_1683707289_recreate_deleted_for_mesUpSql, map[string]*bintree{}},
"1683725607_mark_discord_messages_as_seen.up.sql": &bintree{_1683725607_mark_discord_messages_as_seenUpSql, map[string]*bintree{}},
+ "1684174617_add_url_previews_to_user_messages.up.sql": &bintree{_1684174617_add_url_previews_to_user_messagesUpSql, map[string]*bintree{}},
"README.md": &bintree{readmeMd, map[string]*bintree{}},
"doc.go": &bintree{docGo, map[string]*bintree{}},
}}
diff --git a/protocol/migrations/sqlite/1684174617_add_url_previews_to_user_messages.up.sql b/protocol/migrations/sqlite/1684174617_add_url_previews_to_user_messages.up.sql
new file mode 100644
index 00000000000..0873e7695d4
--- /dev/null
+++ b/protocol/migrations/sqlite/1684174617_add_url_previews_to_user_messages.up.sql
@@ -0,0 +1 @@
+ALTER TABLE user_messages ADD COLUMN unfurled_links BLOB;
diff --git a/protocol/persistence_test.go b/protocol/persistence_test.go
index 55ec3be6a09..58b422c3bc9 100644
--- a/protocol/persistence_test.go
+++ b/protocol/persistence_test.go
@@ -1169,7 +1169,46 @@ func TestSaveLinks(t *testing.T) {
require.Len(t, retrievedMessages, 1)
require.Len(t, retrievedMessages[0].Links, 1)
require.Equal(t, retrievedMessages[0].Links, message.Links)
+}
+
+func TestSaveWithUnfurledLinks(t *testing.T) {
+ db, err := openTestDB()
+ require.NoError(t, err)
+ p := newSQLitePersistence(db)
+ require.NoError(t, err)
+
+ chatID := testPublicChatID
+ message := common.Message{
+ ID: "1",
+ LocalChatID: chatID,
+ From: testPK,
+ ChatMessage: protobuf.ChatMessage{
+ Text: "some-text",
+ UnfurledLinks: []*protobuf.UnfurledLink{
+ {
+ Url: "https://github.com",
+ Title: "Build software better, together",
+ Description: "GitHub is where people build software.",
+ ThumbnailPayload: []byte("abc"),
+ },
+ {
+ Url: "https://www.youtube.com/watch?v=mzOyYtfXkb0",
+ Title: "Status Town Hall #67 - 12 October 2020",
+ Description: "",
+ ThumbnailPayload: []byte("def"),
+ },
+ },
+ },
+ }
+ err = p.SaveMessages([]*common.Message{&message})
+ require.NoError(t, err)
+
+ mgs, _, err := p.MessageByChatID(chatID, "", 10)
+ require.NoError(t, err)
+ require.Len(t, mgs, 1)
+ require.Len(t, mgs[0].UnfurledLinks, 2)
+ require.Equal(t, mgs[0].UnfurledLinks, message.UnfurledLinks)
}
func TestHideMessage(t *testing.T) {
diff --git a/protocol/protobuf/anon_metrics.pb.go b/protocol/protobuf/anon_metrics.pb.go
index 799226b2fde..e87b39ecbb9 100644
--- a/protocol/protobuf/anon_metrics.pb.go
+++ b/protocol/protobuf/anon_metrics.pb.go
@@ -6,7 +6,7 @@ package protobuf
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ timestamp "github.com/golang/protobuf/ptypes/timestamp"
math "math"
)
@@ -36,10 +36,10 @@ type AnonymousMetric struct {
// session_id is the id of the session the metric was recorded in
SessionId string `protobuf:"bytes,6,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
// created_at is the datetime at which the metric was stored in the local db
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+ CreatedAt *timestamp.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
func (m *AnonymousMetric) Reset() { *m = AnonymousMetric{} }
@@ -109,7 +109,7 @@ func (m *AnonymousMetric) GetSessionId() string {
return ""
}
-func (m *AnonymousMetric) GetCreatedAt() *timestamppb.Timestamp {
+func (m *AnonymousMetric) GetCreatedAt() *timestamp.Timestamp {
if m != nil {
return m.CreatedAt
}
diff --git a/protocol/protobuf/chat_message.pb.go b/protocol/protobuf/chat_message.pb.go
index 2aeb34cbdb9..01c58de3ecf 100644
--- a/protocol/protobuf/chat_message.pb.go
+++ b/protocol/protobuf/chat_message.pb.go
@@ -112,7 +112,7 @@ func (x ChatMessage_ContentType) String() string {
}
func (ChatMessage_ContentType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_263952f55fd35689, []int{10, 0}
+ return fileDescriptor_263952f55fd35689, []int{11, 0}
}
type StickerMessage struct {
@@ -846,6 +846,89 @@ func (m *DiscordMessageAttachment) GetLocalUrl() string {
return ""
}
+type UnfurledLink struct {
+ // A valid URL which uniquely identifies this link.
+ Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
+ // Website's title.
+ Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
+ // Description is sometimes available, but can be empty. Most mainstream
+ // websites provide this information.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ ThumbnailPayload []byte `protobuf:"bytes,4,opt,name=thumbnail_payload,json=thumbnailPayload,proto3" json:"thumbnail_payload,omitempty"`
+ ThumbnailWidth uint32 `protobuf:"varint,5,opt,name=thumbnail_width,json=thumbnailWidth,proto3" json:"thumbnail_width,omitempty"`
+ ThumbnailHeight uint32 `protobuf:"varint,6,opt,name=thumbnail_height,json=thumbnailHeight,proto3" json:"thumbnail_height,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *UnfurledLink) Reset() { *m = UnfurledLink{} }
+func (m *UnfurledLink) String() string { return proto.CompactTextString(m) }
+func (*UnfurledLink) ProtoMessage() {}
+func (*UnfurledLink) Descriptor() ([]byte, []int) {
+ return fileDescriptor_263952f55fd35689, []int{10}
+}
+
+func (m *UnfurledLink) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_UnfurledLink.Unmarshal(m, b)
+}
+func (m *UnfurledLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_UnfurledLink.Marshal(b, m, deterministic)
+}
+func (m *UnfurledLink) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_UnfurledLink.Merge(m, src)
+}
+func (m *UnfurledLink) XXX_Size() int {
+ return xxx_messageInfo_UnfurledLink.Size(m)
+}
+func (m *UnfurledLink) XXX_DiscardUnknown() {
+ xxx_messageInfo_UnfurledLink.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UnfurledLink proto.InternalMessageInfo
+
+func (m *UnfurledLink) GetUrl() string {
+ if m != nil {
+ return m.Url
+ }
+ return ""
+}
+
+func (m *UnfurledLink) GetTitle() string {
+ if m != nil {
+ return m.Title
+ }
+ return ""
+}
+
+func (m *UnfurledLink) GetDescription() string {
+ if m != nil {
+ return m.Description
+ }
+ return ""
+}
+
+func (m *UnfurledLink) GetThumbnailPayload() []byte {
+ if m != nil {
+ return m.ThumbnailPayload
+ }
+ return nil
+}
+
+func (m *UnfurledLink) GetThumbnailWidth() uint32 {
+ if m != nil {
+ return m.ThumbnailWidth
+ }
+ return 0
+}
+
+func (m *UnfurledLink) GetThumbnailHeight() uint32 {
+ if m != nil {
+ return m.ThumbnailHeight
+ }
+ return 0
+}
+
type ChatMessage struct {
// Lamport timestamp of the chat message
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
@@ -881,6 +964,7 @@ type ChatMessage struct {
// Message author's display name, introduced in version 1
DisplayName string `protobuf:"bytes,14,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
ContactRequestPropagatedState *ContactRequestPropagatedState `protobuf:"bytes,15,opt,name=contact_request_propagated_state,json=contactRequestPropagatedState,proto3" json:"contact_request_propagated_state,omitempty"`
+ UnfurledLinks []*UnfurledLink `protobuf:"bytes,16,rep,name=unfurled_links,json=unfurledLinks,proto3" json:"unfurled_links,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -890,7 +974,7 @@ func (m *ChatMessage) Reset() { *m = ChatMessage{} }
func (m *ChatMessage) String() string { return proto.CompactTextString(m) }
func (*ChatMessage) ProtoMessage() {}
func (*ChatMessage) Descriptor() ([]byte, []int) {
- return fileDescriptor_263952f55fd35689, []int{10}
+ return fileDescriptor_263952f55fd35689, []int{11}
}
func (m *ChatMessage) XXX_Unmarshal(b []byte) error {
@@ -1064,6 +1148,13 @@ func (m *ChatMessage) GetContactRequestPropagatedState() *ContactRequestPropagat
return nil
}
+func (m *ChatMessage) GetUnfurledLinks() []*UnfurledLink {
+ if m != nil {
+ return m.UnfurledLinks
+ }
+ return nil
+}
+
// XXX_OneofWrappers is for the internal use of the proto package.
func (*ChatMessage) XXX_OneofWrappers() []interface{} {
return []interface{}{
@@ -1088,6 +1179,7 @@ func init() {
proto.RegisterType((*DiscordMessageAuthor)(nil), "protobuf.DiscordMessageAuthor")
proto.RegisterType((*DiscordMessageReference)(nil), "protobuf.DiscordMessageReference")
proto.RegisterType((*DiscordMessageAttachment)(nil), "protobuf.DiscordMessageAttachment")
+ proto.RegisterType((*UnfurledLink)(nil), "protobuf.UnfurledLink")
proto.RegisterType((*ChatMessage)(nil), "protobuf.ChatMessage")
}
@@ -1096,86 +1188,94 @@ func init() {
}
var fileDescriptor_263952f55fd35689 = []byte{
- // 1292 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xcd, 0x92, 0xdb, 0x44,
- 0x10, 0x5e, 0xff, 0x5b, 0x2d, 0xdb, 0xab, 0x9a, 0x6c, 0x12, 0x25, 0x95, 0x4d, 0x1c, 0x57, 0xaa,
- 0xb2, 0x07, 0xca, 0x54, 0x85, 0x40, 0xa5, 0x8a, 0x03, 0xa5, 0xb5, 0x95, 0x8d, 0x08, 0xfe, 0x61,
- 0x24, 0x07, 0x96, 0x8b, 0x6a, 0x56, 0x9a, 0xac, 0x55, 0x6b, 0x49, 0x46, 0x1a, 0x03, 0xe6, 0xce,
- 0x83, 0xf0, 0x12, 0xbc, 0x00, 0x17, 0x0e, 0x5c, 0x79, 0x05, 0x9e, 0x80, 0x07, 0xa0, 0x66, 0xf4,
- 0x63, 0xc9, 0x64, 0x37, 0x54, 0x4e, 0x9a, 0x6e, 0xf5, 0xd7, 0xd3, 0xfd, 0x75, 0x4f, 0xcf, 0x00,
- 0x72, 0x96, 0x84, 0xd9, 0x3e, 0x8d, 0x63, 0x72, 0x49, 0x87, 0xeb, 0x28, 0x64, 0x21, 0x6a, 0x8b,
- 0xcf, 0xc5, 0xe6, 0xed, 0x7d, 0x99, 0x06, 0x1b, 0x3f, 0x4e, 0xd4, 0xf7, 0xbb, 0x4e, 0x18, 0x30,
- 0xe2, 0xb0, 0x44, 0x1c, 0xbc, 0x80, 0x9e, 0xc9, 0x3c, 0xe7, 0x8a, 0x46, 0x93, 0x04, 0x8d, 0x10,
- 0xd4, 0x97, 0x24, 0x5e, 0xaa, 0x95, 0x7e, 0xe5, 0x44, 0xc2, 0x62, 0xcd, 0x75, 0x6b, 0xe2, 0x5c,
- 0xa9, 0xd5, 0x7e, 0xe5, 0xa4, 0x81, 0xc5, 0x7a, 0xf0, 0x47, 0x05, 0x3a, 0x86, 0x4f, 0x2e, 0x69,
- 0x06, 0x54, 0xa1, 0xb5, 0x26, 0xdb, 0x55, 0x48, 0x5c, 0x81, 0xed, 0xe0, 0x4c, 0x44, 0x4f, 0xa1,
- 0xce, 0xb6, 0x6b, 0x2a, 0xe0, 0xbd, 0x67, 0xb7, 0x86, 0x59, 0x64, 0x43, 0x81, 0xb7, 0xb6, 0x6b,
- 0x8a, 0x85, 0x01, 0xba, 0x07, 0x6d, 0xb2, 0xba, 0xd8, 0xf8, 0xb6, 0xe7, 0xaa, 0x35, 0xb1, 0x7f,
- 0x4b, 0xc8, 0x86, 0x8b, 0x8e, 0xa0, 0xf1, 0xa3, 0xe7, 0xb2, 0xa5, 0x5a, 0xef, 0x57, 0x4e, 0xba,
- 0x38, 0x11, 0xd0, 0x1d, 0x68, 0x2e, 0xa9, 0x77, 0xb9, 0x64, 0x6a, 0x43, 0xa8, 0x53, 0x09, 0x7d,
- 0x04, 0x28, 0x75, 0xc4, 0x77, 0x88, 0x6d, 0x27, 0xdc, 0x04, 0x4c, 0x6d, 0x0a, 0x1b, 0x25, 0x71,
- 0x29, 0x7e, 0x8c, 0xb8, 0x7e, 0xf0, 0x5b, 0x05, 0x3a, 0xda, 0xc6, 0xf5, 0xc2, 0xf7, 0xa7, 0xf2,
- 0xbc, 0x94, 0x4a, 0x7f, 0x97, 0x4a, 0x11, 0x9f, 0x08, 0x85, 0xbc, 0x1e, 0x81, 0xec, 0x6e, 0x22,
- 0xc2, 0xbc, 0x30, 0xb0, 0xfd, 0x58, 0xa4, 0x56, 0xc7, 0x90, 0xa9, 0x26, 0xf1, 0xe0, 0x53, 0x90,
- 0x72, 0x0c, 0xba, 0x03, 0x68, 0x31, 0x7d, 0x3d, 0x9d, 0x7d, 0x33, 0xb5, 0xb5, 0xc5, 0xd8, 0x98,
- 0xd9, 0xd6, 0xf9, 0x5c, 0x57, 0x0e, 0x50, 0x0b, 0x6a, 0x9a, 0x36, 0x52, 0x2a, 0x62, 0x31, 0xc1,
- 0x4a, 0x75, 0xf0, 0x4b, 0x15, 0x64, 0xdd, 0xf5, 0x58, 0x16, 0xf7, 0x11, 0x34, 0x9c, 0x55, 0xe8,
- 0x5c, 0x89, 0xa8, 0xeb, 0x38, 0x11, 0x78, 0xf5, 0x18, 0xfd, 0x89, 0x89, 0x98, 0x25, 0x2c, 0xd6,
- 0xe8, 0x2e, 0xb4, 0x44, 0xcf, 0xe4, 0x44, 0x37, 0xb9, 0x68, 0xb8, 0xe8, 0x18, 0x20, 0xed, 0x23,
- 0xfe, 0xaf, 0x2e, 0xfe, 0x49, 0xa9, 0x26, 0x29, 0xc3, 0x65, 0x44, 0x82, 0x84, 0xef, 0x0e, 0x4e,
- 0x04, 0xf4, 0x02, 0x3a, 0x19, 0x48, 0xb0, 0xd3, 0x14, 0xec, 0xdc, 0xde, 0xb1, 0x93, 0x06, 0x28,
- 0x28, 0x91, 0xfd, 0x9d, 0x80, 0xc6, 0xd0, 0xe1, 0x0d, 0x49, 0x03, 0x96, 0x20, 0x5b, 0x02, 0xf9,
- 0x78, 0x87, 0x1c, 0x2d, 0x49, 0x96, 0xde, 0x70, 0x94, 0x58, 0x26, 0x5e, 0x9c, 0x9d, 0x30, 0xf8,
- 0xb3, 0x02, 0xdd, 0x31, 0x5d, 0x51, 0x46, 0x6f, 0x66, 0xa2, 0x90, 0x75, 0xf5, 0x86, 0xac, 0x6b,
- 0xd7, 0x66, 0x5d, 0xbf, 0x29, 0xeb, 0xc6, 0xff, 0xce, 0xfa, 0x18, 0xc0, 0x15, 0xe1, 0xba, 0xf6,
- 0xc5, 0x56, 0xb0, 0x25, 0x61, 0x29, 0xd5, 0x9c, 0x6e, 0x07, 0x06, 0xa0, 0x24, 0x9b, 0x97, 0x61,
- 0x34, 0x79, 0x4f, 0x4a, 0xe5, 0xc8, 0xab, 0x7b, 0x91, 0x0f, 0xfe, 0xaa, 0x42, 0x6f, 0xec, 0xc5,
- 0x4e, 0x18, 0xb9, 0x99, 0x9f, 0x1e, 0x54, 0x3d, 0x37, 0x3d, 0xde, 0x55, 0xcf, 0x15, 0xed, 0x91,
- 0xb5, 0xb4, 0x94, 0x36, 0xec, 0x03, 0x90, 0x98, 0xe7, 0xd3, 0x98, 0x11, 0x7f, 0x9d, 0xd1, 0x91,
- 0x2b, 0xd0, 0x09, 0x1c, 0xe6, 0x02, 0x6f, 0x3f, 0x9a, 0x35, 0xca, 0xbe, 0x9a, 0x1f, 0xa4, 0xb4,
- 0x4e, 0x82, 0x1d, 0x09, 0x67, 0x22, 0xfa, 0x0c, 0x9a, 0x64, 0xc3, 0x96, 0x61, 0x24, 0xd2, 0x97,
- 0x9f, 0x3d, 0xdc, 0xd1, 0x56, 0x8e, 0x57, 0x13, 0x56, 0x38, 0xb5, 0x46, 0x5f, 0x80, 0x14, 0xd1,
- 0xb7, 0x34, 0xa2, 0x81, 0x93, 0x74, 0x8b, 0x5c, 0xec, 0x96, 0x32, 0x14, 0x67, 0x86, 0x78, 0x87,
- 0x41, 0x63, 0x90, 0x09, 0x63, 0xc4, 0x59, 0xfa, 0x34, 0x60, 0xb1, 0xda, 0xee, 0xd7, 0x4e, 0xe4,
- 0x67, 0x83, 0x6b, 0x77, 0xcf, 0x4d, 0x71, 0x11, 0x36, 0xf8, 0xbb, 0x02, 0x47, 0xef, 0x8a, 0xf3,
- 0x5d, 0xec, 0x06, 0xc4, 0xcf, 0xd9, 0xe5, 0x6b, 0xf4, 0x04, 0xba, 0xae, 0x17, 0x3b, 0x91, 0xe7,
- 0x7b, 0x01, 0x61, 0x61, 0x94, 0x32, 0x5c, 0x56, 0xa2, 0xfb, 0xd0, 0x0e, 0x3c, 0xe7, 0x4a, 0xa0,
- 0x13, 0x7a, 0x73, 0x99, 0xd7, 0x87, 0xfc, 0x40, 0x18, 0x89, 0x16, 0xd1, 0x2a, 0x65, 0x76, 0xa7,
- 0x40, 0x43, 0x40, 0x89, 0x20, 0x86, 0xdc, 0x3c, 0x9d, 0x64, 0x4d, 0xd1, 0xbb, 0xef, 0xf8, 0xc3,
- 0x77, 0x5a, 0x85, 0x0e, 0x59, 0x71, 0x67, 0xad, 0x64, 0xa7, 0x4c, 0x1e, 0x84, 0x70, 0xf7, 0x1a,
- 0x52, 0x79, 0x10, 0x79, 0xa3, 0xa5, 0x19, 0x17, 0xce, 0xcc, 0x03, 0x90, 0x9c, 0x25, 0x09, 0x02,
- 0xba, 0x32, 0xf2, 0xbe, 0xcc, 0x15, 0xbc, 0x31, 0x2e, 0x37, 0xde, 0xca, 0x35, 0xf2, 0x41, 0x9f,
- 0x8a, 0x83, 0x7f, 0x2a, 0xa0, 0x5e, 0x57, 0x83, 0xff, 0xb0, 0x5b, 0x0a, 0x61, 0xbf, 0xf9, 0x91,
- 0x02, 0xb5, 0x4d, 0xb4, 0x4a, 0x37, 0xe0, 0x4b, 0x9e, 0xe9, 0x5b, 0x6f, 0x45, 0xa7, 0x05, 0x4e,
- 0x33, 0x99, 0x57, 0x85, 0xaf, 0x4d, 0xef, 0x67, 0x7a, 0xba, 0x65, 0x34, 0x16, 0xbc, 0xd6, 0x71,
- 0x59, 0x89, 0xfa, 0x50, 0x9c, 0x3c, 0xe9, 0xd9, 0x2d, 0xaa, 0x8a, 0x97, 0x47, 0xab, 0x7c, 0x79,
- 0x14, 0x79, 0x6e, 0xef, 0xf1, 0xfc, 0x6b, 0x1b, 0xe4, 0xc2, 0xac, 0xbb, 0xe6, 0xb4, 0x97, 0xce,
- 0x65, 0x55, 0xfc, 0x29, 0x9c, 0xcb, 0x6c, 0xd0, 0xd7, 0x0a, 0x83, 0xfe, 0x11, 0xc8, 0x11, 0x8d,
- 0xd7, 0x61, 0x10, 0x53, 0x9b, 0x85, 0x69, 0xd2, 0x90, 0xa9, 0xac, 0x90, 0xdf, 0xb9, 0x34, 0x88,
- 0x6d, 0xd1, 0x66, 0xe9, 0x19, 0xa5, 0x41, 0x2c, 0x18, 0x29, 0x8c, 0xcb, 0x66, 0x69, 0x5c, 0xee,
- 0x4f, 0xbe, 0xd6, 0x07, 0xcf, 0xfb, 0xf6, 0x87, 0xcc, 0x7b, 0xf4, 0x1c, 0x5a, 0x71, 0xf2, 0x6a,
- 0x51, 0x25, 0x31, 0x02, 0xd4, 0x9d, 0x83, 0xf2, 0x73, 0xe6, 0xd5, 0x01, 0xce, 0x4c, 0xd1, 0x10,
- 0x1a, 0xe2, 0x39, 0xa0, 0x82, 0xc0, 0xdc, 0xd9, 0x7b, 0x87, 0xec, 0x10, 0x89, 0x19, 0xb7, 0x27,
- 0xfc, 0x52, 0x56, 0xe5, 0x7d, 0xfb, 0xe2, 0x65, 0xcf, 0xed, 0x85, 0x19, 0x7a, 0x08, 0x92, 0x13,
- 0xfa, 0xfe, 0x26, 0xf0, 0xd8, 0x56, 0xed, 0xf0, 0xd2, 0xbf, 0x3a, 0xc0, 0x3b, 0x15, 0x1a, 0xc1,
- 0xa1, 0x9b, 0x34, 0x76, 0xf6, 0x54, 0x53, 0x9d, 0xfd, 0xe8, 0xcb, 0x9d, 0xff, 0xea, 0x00, 0xf7,
- 0xdc, 0xf2, 0xf4, 0xce, 0xaf, 0xa2, 0x6e, 0xf1, 0x2a, 0x7a, 0x0c, 0x1d, 0xd7, 0x8b, 0xd7, 0x2b,
- 0xb2, 0x4d, 0x0a, 0xd9, 0x4b, 0xda, 0x32, 0xd5, 0x89, 0x62, 0xae, 0xa1, 0x9f, 0x3e, 0xfd, 0xec,
- 0x88, 0x7e, 0xbf, 0xa1, 0x31, 0xb3, 0xd7, 0x51, 0xb8, 0x26, 0x97, 0x84, 0x5f, 0x43, 0x31, 0x23,
- 0x8c, 0xaa, 0x87, 0x22, 0x9c, 0xa7, 0x85, 0x6a, 0x24, 0x08, 0x9c, 0x00, 0xe6, 0xb9, 0xbd, 0xc9,
- 0xcd, 0xf1, 0xb1, 0x73, 0xd3, 0xef, 0xc1, 0xef, 0x55, 0x90, 0x47, 0xa5, 0x83, 0x71, 0x94, 0xbd,
- 0x6b, 0x46, 0xb3, 0xa9, 0xa5, 0x4f, 0xad, 0xec, 0x65, 0xd3, 0x03, 0xb0, 0xf4, 0x6f, 0x2d, 0x7b,
- 0xfe, 0x95, 0x66, 0x4c, 0x95, 0x0a, 0x92, 0xa1, 0x65, 0x5a, 0xc6, 0xe8, 0xb5, 0x8e, 0x95, 0x2a,
- 0x02, 0x68, 0x9a, 0x96, 0x66, 0x2d, 0x4c, 0xa5, 0x86, 0x24, 0x68, 0xe8, 0x93, 0xd9, 0x97, 0x86,
- 0x52, 0x47, 0x77, 0xe1, 0x96, 0x85, 0xb5, 0xa9, 0xa9, 0x8d, 0x2c, 0x63, 0xc6, 0x3d, 0x4e, 0x26,
- 0xda, 0x74, 0xac, 0x34, 0xd0, 0x09, 0x3c, 0x31, 0xcf, 0x4d, 0x4b, 0x9f, 0xd8, 0x13, 0xdd, 0x34,
- 0xb5, 0x33, 0x3d, 0xdf, 0x6d, 0x8e, 0x8d, 0x37, 0x9a, 0xa5, 0xdb, 0x67, 0x78, 0xb6, 0x98, 0x2b,
- 0x4d, 0xee, 0xcd, 0x98, 0x68, 0x67, 0xba, 0xd2, 0xe2, 0x4b, 0xf1, 0xd6, 0x52, 0xda, 0xa8, 0x0b,
- 0x12, 0x77, 0xb6, 0x98, 0x1a, 0xd6, 0xb9, 0x22, 0xf1, 0xd7, 0xd8, 0x9e, 0xbb, 0x33, 0x6d, 0xae,
- 0x00, 0xba, 0x05, 0x87, 0xdc, 0xaf, 0x36, 0xb2, 0x6c, 0xac, 0x7f, 0xbd, 0xd0, 0x4d, 0x4b, 0x91,
- 0xb9, 0x72, 0x6c, 0x98, 0xa3, 0x19, 0x1e, 0x67, 0xd6, 0x4a, 0x07, 0xdd, 0x83, 0xdb, 0xc6, 0x58,
- 0x9f, 0x5a, 0x86, 0x75, 0x6e, 0xbf, 0xd1, 0xb1, 0xf1, 0xd2, 0x18, 0x69, 0x3c, 0x66, 0xa5, 0x8b,
- 0x1e, 0xc3, 0xf1, 0x9e, 0xf3, 0xb9, 0x31, 0x9d, 0xea, 0x3b, 0x74, 0xef, 0x54, 0xca, 0xc7, 0xc9,
- 0x69, 0xf7, 0x3b, 0x79, 0xf8, 0xf1, 0xe7, 0x59, 0x71, 0x2e, 0x9a, 0x62, 0xf5, 0xc9, 0xbf, 0x01,
- 0x00, 0x00, 0xff, 0xff, 0x6a, 0xfa, 0x3a, 0x08, 0xfe, 0x0b, 0x00, 0x00,
+ // 1411 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4f, 0x6f, 0xdb, 0xc6,
+ 0x12, 0xb7, 0x64, 0xfd, 0xe3, 0xe8, 0x8f, 0xf9, 0x36, 0x4e, 0xc2, 0x04, 0x71, 0xe2, 0x08, 0x01,
+ 0xe2, 0x87, 0xf7, 0xe0, 0x07, 0xe4, 0xa5, 0x45, 0x80, 0xa2, 0x28, 0x68, 0x89, 0xb1, 0xd9, 0x44,
+ 0xb2, 0xba, 0xa2, 0x92, 0xba, 0x17, 0x62, 0x4d, 0xae, 0x2d, 0xc2, 0x14, 0xa9, 0x92, 0xcb, 0xb6,
+ 0xea, 0xbd, 0x5f, 0xa9, 0x5f, 0xa0, 0x97, 0x1e, 0x7a, 0xed, 0xa1, 0xb7, 0x9e, 0xfa, 0x09, 0xfa,
+ 0x01, 0x8a, 0xdd, 0xe5, 0x3f, 0xa9, 0xb1, 0x53, 0xe4, 0xc4, 0x9d, 0xe1, 0xcc, 0xec, 0xcc, 0x6f,
+ 0x66, 0x67, 0x06, 0x90, 0x33, 0x27, 0xcc, 0x5e, 0xd0, 0x38, 0x26, 0x97, 0xf4, 0x70, 0x19, 0x85,
+ 0x2c, 0x44, 0x2d, 0xf1, 0x39, 0x4f, 0x2e, 0xee, 0xb7, 0x69, 0x90, 0x2c, 0x62, 0xc9, 0xbe, 0xdf,
+ 0x75, 0xc2, 0x80, 0x11, 0x87, 0x49, 0xb2, 0xff, 0x02, 0x7a, 0x53, 0xe6, 0x39, 0x57, 0x34, 0x1a,
+ 0x49, 0x6d, 0x84, 0xa0, 0x36, 0x27, 0xf1, 0x5c, 0xab, 0xec, 0x57, 0x0e, 0x14, 0x2c, 0xce, 0x9c,
+ 0xb7, 0x24, 0xce, 0x95, 0x56, 0xdd, 0xaf, 0x1c, 0xd4, 0xb1, 0x38, 0xf7, 0x7f, 0xae, 0x40, 0xc7,
+ 0x5c, 0x90, 0x4b, 0x9a, 0x29, 0x6a, 0xd0, 0x5c, 0x92, 0x95, 0x1f, 0x12, 0x57, 0xe8, 0x76, 0x70,
+ 0x46, 0xa2, 0xa7, 0x50, 0x63, 0xab, 0x25, 0x15, 0xea, 0xbd, 0x67, 0xb7, 0x0e, 0x33, 0xcf, 0x0e,
+ 0x85, 0xbe, 0xb5, 0x5a, 0x52, 0x2c, 0x04, 0xd0, 0x3d, 0x68, 0x11, 0xff, 0x3c, 0x59, 0xd8, 0x9e,
+ 0xab, 0x6d, 0x8b, 0xfb, 0x9b, 0x82, 0x36, 0x5d, 0xb4, 0x0b, 0xf5, 0x6f, 0x3d, 0x97, 0xcd, 0xb5,
+ 0xda, 0x7e, 0xe5, 0xa0, 0x8b, 0x25, 0x81, 0xee, 0x40, 0x63, 0x4e, 0xbd, 0xcb, 0x39, 0xd3, 0xea,
+ 0x82, 0x9d, 0x52, 0xe8, 0xbf, 0x80, 0x52, 0x43, 0xfc, 0x86, 0xd8, 0x76, 0xc2, 0x24, 0x60, 0x5a,
+ 0x43, 0xc8, 0xa8, 0xd2, 0xa4, 0xf8, 0x31, 0xe0, 0xfc, 0xfe, 0x8f, 0x15, 0xe8, 0xe8, 0x89, 0xeb,
+ 0x85, 0xef, 0x0f, 0xe5, 0xf9, 0x5a, 0x28, 0xfb, 0x45, 0x28, 0x65, 0x7d, 0x49, 0x94, 0xe2, 0x7a,
+ 0x04, 0x6d, 0x37, 0x89, 0x08, 0xf3, 0xc2, 0xc0, 0x5e, 0xc4, 0x22, 0xb4, 0x1a, 0x86, 0x8c, 0x35,
+ 0x8a, 0xfb, 0x1f, 0x81, 0x92, 0xeb, 0xa0, 0x3b, 0x80, 0x66, 0xe3, 0x57, 0xe3, 0xd3, 0xb7, 0x63,
+ 0x5b, 0x9f, 0x0d, 0xcd, 0x53, 0xdb, 0x3a, 0x9b, 0x18, 0xea, 0x16, 0x6a, 0xc2, 0xb6, 0xae, 0x0f,
+ 0xd4, 0x8a, 0x38, 0x8c, 0xb0, 0x5a, 0xed, 0xff, 0x50, 0x85, 0xb6, 0xe1, 0x7a, 0x2c, 0xf3, 0x7b,
+ 0x17, 0xea, 0x8e, 0x1f, 0x3a, 0x57, 0xc2, 0xeb, 0x1a, 0x96, 0x04, 0xcf, 0x1e, 0xa3, 0xdf, 0x31,
+ 0xe1, 0xb3, 0x82, 0xc5, 0x19, 0xdd, 0x85, 0xa6, 0xa8, 0x99, 0x1c, 0xe8, 0x06, 0x27, 0x4d, 0x17,
+ 0xed, 0x01, 0xa4, 0x75, 0xc4, 0xff, 0xd5, 0xc4, 0x3f, 0x25, 0xe5, 0xc8, 0x34, 0x5c, 0x46, 0x24,
+ 0x90, 0x78, 0x77, 0xb0, 0x24, 0xd0, 0x0b, 0xe8, 0x64, 0x4a, 0x02, 0x9d, 0x86, 0x40, 0xe7, 0x76,
+ 0x81, 0x4e, 0xea, 0xa0, 0x80, 0xa4, 0xbd, 0x28, 0x08, 0x34, 0x84, 0x0e, 0x2f, 0x48, 0x1a, 0x30,
+ 0xa9, 0xd9, 0x14, 0x9a, 0x8f, 0x0b, 0xcd, 0xc1, 0x9c, 0x64, 0xe1, 0x1d, 0x0e, 0xa4, 0xa4, 0xb4,
+ 0xe2, 0x14, 0x44, 0xff, 0x97, 0x0a, 0x74, 0x87, 0xd4, 0xa7, 0x8c, 0xde, 0x8c, 0x44, 0x29, 0xea,
+ 0xea, 0x0d, 0x51, 0x6f, 0x5f, 0x1b, 0x75, 0xed, 0xa6, 0xa8, 0xeb, 0xff, 0x38, 0xea, 0x3d, 0x00,
+ 0x57, 0xb8, 0xeb, 0xda, 0xe7, 0x2b, 0x81, 0x96, 0x82, 0x95, 0x94, 0x73, 0xb4, 0xea, 0x9b, 0x80,
+ 0x64, 0x34, 0x2f, 0xc3, 0x68, 0xf4, 0x9e, 0x90, 0xd6, 0x3d, 0xaf, 0x6e, 0x78, 0xde, 0xff, 0xb5,
+ 0x0a, 0xbd, 0xa1, 0x17, 0x3b, 0x61, 0xe4, 0x66, 0x76, 0x7a, 0x50, 0xf5, 0xdc, 0xf4, 0x79, 0x57,
+ 0x3d, 0x57, 0x94, 0x47, 0x56, 0xd2, 0x4a, 0x5a, 0xb0, 0x0f, 0x40, 0x61, 0xde, 0x82, 0xc6, 0x8c,
+ 0x2c, 0x96, 0x19, 0x1c, 0x39, 0x03, 0x1d, 0xc0, 0x4e, 0x4e, 0xf0, 0xf2, 0xa3, 0x59, 0xa1, 0x6c,
+ 0xb2, 0xf9, 0x43, 0x4a, 0xf3, 0x24, 0xd0, 0x51, 0x70, 0x46, 0xa2, 0x8f, 0xa1, 0x41, 0x12, 0x36,
+ 0x0f, 0x23, 0x11, 0x7e, 0xfb, 0xd9, 0xc3, 0x02, 0xb6, 0x75, 0x7f, 0x75, 0x21, 0x85, 0x53, 0x69,
+ 0xf4, 0x19, 0x28, 0x11, 0xbd, 0xa0, 0x11, 0x0d, 0x1c, 0x59, 0x2d, 0xed, 0x72, 0xb5, 0xac, 0xab,
+ 0xe2, 0x4c, 0x10, 0x17, 0x3a, 0x68, 0x08, 0x6d, 0xc2, 0x18, 0x71, 0xe6, 0x0b, 0x1a, 0xb0, 0x58,
+ 0x6b, 0xed, 0x6f, 0x1f, 0xb4, 0x9f, 0xf5, 0xaf, 0xbd, 0x3d, 0x17, 0xc5, 0x65, 0xb5, 0xfe, 0x1f,
+ 0x15, 0xd8, 0x7d, 0x97, 0x9f, 0xef, 0x42, 0x37, 0x20, 0x8b, 0x1c, 0x5d, 0x7e, 0x46, 0x4f, 0xa0,
+ 0xeb, 0x7a, 0xb1, 0x13, 0x79, 0x0b, 0x2f, 0x20, 0x2c, 0x8c, 0x52, 0x84, 0xd7, 0x99, 0xe8, 0x3e,
+ 0xb4, 0x02, 0xcf, 0xb9, 0x12, 0xda, 0x12, 0xde, 0x9c, 0xe6, 0xf9, 0x21, 0xdf, 0x10, 0x46, 0xa2,
+ 0x59, 0xe4, 0xa7, 0xc8, 0x16, 0x0c, 0x74, 0x08, 0x48, 0x12, 0xa2, 0xc9, 0x4d, 0xd2, 0x4e, 0xd6,
+ 0x10, 0xb5, 0xfb, 0x8e, 0x3f, 0xfc, 0x26, 0x3f, 0x74, 0x88, 0xcf, 0x8d, 0x35, 0xe5, 0x4d, 0x19,
+ 0xdd, 0x0f, 0xe1, 0xee, 0x35, 0xa0, 0x72, 0x27, 0xf2, 0x42, 0x4b, 0x23, 0x2e, 0xbd, 0x99, 0x07,
+ 0xa0, 0x38, 0x73, 0x12, 0x04, 0xd4, 0x37, 0xf3, 0xba, 0xcc, 0x19, 0xbc, 0x30, 0x2e, 0x13, 0xcf,
+ 0x77, 0xcd, 0xbc, 0xd1, 0xa7, 0x64, 0xff, 0xcf, 0x0a, 0x68, 0xd7, 0xe5, 0xe0, 0x6f, 0xe8, 0xae,
+ 0xb9, 0xb0, 0x59, 0xfc, 0x48, 0x85, 0xed, 0x24, 0xf2, 0xd3, 0x0b, 0xf8, 0x91, 0x47, 0x7a, 0xe1,
+ 0xf9, 0x74, 0x5c, 0xc2, 0x34, 0xa3, 0x79, 0x56, 0xf8, 0x79, 0xea, 0x7d, 0x4f, 0x8f, 0x56, 0x8c,
+ 0xc6, 0x02, 0xd7, 0x1a, 0x5e, 0x67, 0xa2, 0x7d, 0x28, 0x77, 0x9e, 0xf4, 0xed, 0x96, 0x59, 0xe5,
+ 0xe1, 0xd1, 0x5c, 0x1f, 0x1e, 0x65, 0x9c, 0x5b, 0x1b, 0x38, 0xff, 0x56, 0x81, 0xce, 0x2c, 0xb8,
+ 0x48, 0x22, 0x9f, 0xba, 0xaf, 0xbd, 0xe0, 0x2a, 0x73, 0xbe, 0x52, 0x38, 0xbf, 0x0b, 0x75, 0xe6,
+ 0x31, 0x3f, 0xab, 0x25, 0x49, 0x70, 0x87, 0x5c, 0xca, 0xeb, 0x66, 0xc9, 0x67, 0x49, 0x1a, 0x6c,
+ 0x99, 0x85, 0xfe, 0x03, 0xff, 0x62, 0xf3, 0x64, 0x71, 0x1e, 0x10, 0xcf, 0xb7, 0x33, 0xd7, 0x64,
+ 0x27, 0x53, 0xf3, 0x1f, 0x93, 0x7c, 0x56, 0xef, 0x14, 0xc2, 0x72, 0xe2, 0xca, 0xd1, 0xda, 0xcb,
+ 0xd9, 0x6f, 0xc5, 0xe8, 0xfd, 0x37, 0x14, 0xca, 0x76, 0x3a, 0x84, 0xe5, 0x80, 0x2d, 0x0c, 0x9c,
+ 0x08, 0x76, 0xff, 0xf7, 0x16, 0xb4, 0x4b, 0x7d, 0xfc, 0x9a, 0x4e, 0xb6, 0xd6, 0x73, 0xaa, 0xe2,
+ 0x4f, 0xa9, 0xe7, 0x64, 0x43, 0x6c, 0xbb, 0x34, 0xc4, 0x1e, 0x41, 0x3b, 0xa2, 0xf1, 0x32, 0x0c,
+ 0x62, 0x6a, 0xb3, 0x30, 0x4d, 0x28, 0x64, 0x2c, 0x2b, 0xe4, 0xfb, 0x04, 0x0d, 0x62, 0x5b, 0x3c,
+ 0xa1, 0xb4, 0xff, 0xd0, 0x20, 0x16, 0xd9, 0x2e, 0x8d, 0x82, 0xc6, 0xda, 0x28, 0xd8, 0xec, 0xea,
+ 0xcd, 0x0f, 0x9e, 0x65, 0xad, 0x0f, 0x99, 0x65, 0xe8, 0x39, 0x34, 0x63, 0xb9, 0x91, 0x69, 0x8a,
+ 0x68, 0x6f, 0x5a, 0x61, 0x60, 0x7d, 0x55, 0x3b, 0xd9, 0xc2, 0x99, 0x28, 0x3a, 0x84, 0xba, 0x58,
+ 0x75, 0x34, 0x10, 0x3a, 0x77, 0x36, 0x76, 0xac, 0x42, 0x43, 0x8a, 0x71, 0x79, 0xc2, 0x17, 0x0e,
+ 0xad, 0xbd, 0x29, 0x5f, 0x5e, 0x64, 0xb8, 0xbc, 0x10, 0x43, 0x0f, 0x41, 0x71, 0xc2, 0xc5, 0x22,
+ 0x09, 0x3c, 0xb6, 0xd2, 0x3a, 0xbc, 0x76, 0x4e, 0xb6, 0x70, 0xc1, 0x42, 0x03, 0xd8, 0x71, 0xe5,
+ 0xa3, 0xcd, 0xd6, 0x50, 0xcd, 0xd9, 0xf4, 0x7e, 0xfd, 0x55, 0x9f, 0x6c, 0xe1, 0x9e, 0xbb, 0x3e,
+ 0x99, 0xf2, 0x31, 0xdb, 0x2d, 0x8f, 0xd9, 0xc7, 0xd0, 0x71, 0xbd, 0x78, 0xe9, 0x93, 0x95, 0x4c,
+ 0x64, 0x2f, 0xad, 0x70, 0xc9, 0x13, 0xc9, 0x5c, 0xc2, 0x7e, 0xba, 0xd6, 0xda, 0x11, 0xfd, 0x3a,
+ 0xa1, 0x31, 0xb3, 0x97, 0x51, 0xb8, 0x24, 0x97, 0x84, 0x8f, 0xd8, 0x98, 0x11, 0x46, 0xb5, 0x1d,
+ 0xe1, 0xce, 0xd3, 0x52, 0x36, 0xa4, 0x06, 0x96, 0x0a, 0x93, 0x5c, 0x7e, 0xca, 0xc5, 0xf1, 0x9e,
+ 0x73, 0xd3, 0x6f, 0xf4, 0x29, 0xf4, 0x92, 0xf4, 0xb5, 0xda, 0xbe, 0x17, 0x5c, 0xc5, 0x9a, 0x2a,
+ 0x06, 0x49, 0x09, 0xc8, 0xf2, 0x6b, 0xc6, 0xdd, 0xa4, 0x44, 0xc5, 0xfd, 0x9f, 0xaa, 0xd0, 0x1e,
+ 0xac, 0xf5, 0x8c, 0xdd, 0x6c, 0xe5, 0x1b, 0x9c, 0x8e, 0x2d, 0x63, 0x6c, 0x65, 0x4b, 0x5f, 0x0f,
+ 0xc0, 0x32, 0xbe, 0xb4, 0xec, 0xc9, 0x6b, 0xdd, 0x1c, 0xab, 0x15, 0xd4, 0x86, 0xe6, 0xd4, 0x32,
+ 0x07, 0xaf, 0x0c, 0xac, 0x56, 0x11, 0x40, 0x63, 0x6a, 0xe9, 0xd6, 0x6c, 0xaa, 0x6e, 0x23, 0x05,
+ 0xea, 0xc6, 0xe8, 0xf4, 0x73, 0x53, 0xad, 0xa1, 0xbb, 0x70, 0xcb, 0xc2, 0xfa, 0x78, 0xaa, 0x0f,
+ 0x2c, 0xf3, 0x94, 0x5b, 0x1c, 0x8d, 0xf4, 0xf1, 0x50, 0xad, 0xa3, 0x03, 0x78, 0x32, 0x3d, 0x9b,
+ 0x5a, 0xc6, 0xc8, 0x1e, 0x19, 0xd3, 0xa9, 0x7e, 0x6c, 0xe4, 0xb7, 0x4d, 0xb0, 0xf9, 0x46, 0xb7,
+ 0x0c, 0xfb, 0x18, 0x9f, 0xce, 0x26, 0x6a, 0x83, 0x5b, 0x33, 0x47, 0xfa, 0xb1, 0xa1, 0x36, 0xf9,
+ 0x51, 0xac, 0xa1, 0x6a, 0x0b, 0x75, 0x41, 0xe1, 0xc6, 0x66, 0x63, 0xd3, 0x3a, 0x53, 0x15, 0xbe,
+ 0xa8, 0x6e, 0x98, 0x3b, 0xd6, 0x27, 0x2a, 0xa0, 0x5b, 0xb0, 0xc3, 0xed, 0xea, 0x03, 0xcb, 0xc6,
+ 0xc6, 0x17, 0x33, 0x63, 0x6a, 0xa9, 0x6d, 0xce, 0x1c, 0x9a, 0xd3, 0xc1, 0x29, 0x1e, 0x66, 0xd2,
+ 0x6a, 0x07, 0xdd, 0x83, 0xdb, 0xe6, 0xd0, 0x18, 0x5b, 0xa6, 0x75, 0x66, 0xbf, 0x31, 0xb0, 0xf9,
+ 0xd2, 0x1c, 0xe8, 0xdc, 0x67, 0xb5, 0x8b, 0x1e, 0xc3, 0xde, 0x86, 0xf1, 0x89, 0x39, 0x1e, 0x1b,
+ 0x85, 0x76, 0xef, 0x48, 0xc9, 0x3b, 0xed, 0x51, 0xf7, 0xab, 0xf6, 0xe1, 0xff, 0x3e, 0xc9, 0xb0,
+ 0x3f, 0x6f, 0x88, 0xd3, 0xff, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x91, 0x0d, 0xf3, 0x6d, 0x19,
+ 0x0d, 0x00, 0x00,
}
diff --git a/protocol/protobuf/chat_message.proto b/protocol/protobuf/chat_message.proto
index cb67f1de069..4f787eecc80 100644
--- a/protocol/protobuf/chat_message.proto
+++ b/protocol/protobuf/chat_message.proto
@@ -106,6 +106,19 @@ message DiscordMessageAttachment {
string localUrl = 8;
}
+message UnfurledLink {
+ // A valid URL which uniquely identifies this link.
+ string url = 1;
+ // Website's title.
+ string title = 2;
+ // Description is sometimes available, but can be empty. Most mainstream
+ // websites provide this information.
+ string description = 3;
+ bytes thumbnail_payload = 4;
+ uint32 thumbnail_width = 5;
+ uint32 thumbnail_height = 6;
+}
+
message ChatMessage {
// Lamport timestamp of the chat message
uint64 clock = 1;
@@ -146,6 +159,8 @@ message ChatMessage {
ContactRequestPropagatedState contact_request_propagated_state = 15;
+ repeated UnfurledLink unfurled_links = 16;
+
enum ContentType {
UNKNOWN_CONTENT_TYPE = 0;
TEXT_PLAIN = 1;
diff --git a/protocol/pushnotificationclient/migrations/migrations.go b/protocol/pushnotificationclient/migrations/migrations.go
index 55f53d37ff0..137966dadb0 100644
--- a/protocol/pushnotificationclient/migrations/migrations.go
+++ b/protocol/pushnotificationclient/migrations/migrations.go
@@ -90,7 +90,7 @@ func _1593601729_initial_schemaDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1593601729_initial_schema.down.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1593601729_initial_schema.down.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa, 0x95, 0x55, 0x64, 0x38, 0x40, 0x16, 0xbf, 0x8b, 0x1c, 0x18, 0xb4, 0xc5, 0x7f, 0xd0, 0xb8, 0xf0, 0x3c, 0xa2, 0x82, 0xf8, 0x8d, 0x5a, 0xd3, 0xb6, 0x6e, 0xa3, 0xb4, 0xc, 0x9, 0x33, 0x0}}
return a, nil
}
@@ -110,7 +110,7 @@ func _1593601729_initial_schemaUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1593601729_initial_schema.up.sql", size: 1773, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1593601729_initial_schema.up.sql", size: 1773, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x1e, 0x5, 0x35, 0x9, 0xb2, 0x2d, 0x6f, 0x33, 0x63, 0xa2, 0x7a, 0x5b, 0xd2, 0x2d, 0xcb, 0x79, 0x7e, 0x6, 0xb4, 0x9d, 0x35, 0xd8, 0x9b, 0x55, 0xe5, 0xf8, 0x44, 0xca, 0xa6, 0xf3, 0xd3}}
return a, nil
}
@@ -130,7 +130,7 @@ func _1597909626_add_server_typeDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1597909626_add_server_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1597909626_add_server_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
return a, nil
}
@@ -150,7 +150,7 @@ func _1597909626_add_server_typeUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1597909626_add_server_type.up.sql", size: 145, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1597909626_add_server_type.up.sql", size: 145, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc8, 0x3f, 0xe0, 0xe7, 0x57, 0x0, 0x5d, 0x60, 0xf3, 0x55, 0x64, 0x71, 0x80, 0x3c, 0xca, 0x8, 0x61, 0xb5, 0x3c, 0xe, 0xa1, 0xe4, 0x61, 0xd1, 0x4e, 0xd8, 0xb2, 0x55, 0xdd, 0x87, 0x62, 0x9b}}
return a, nil
}
@@ -170,7 +170,7 @@ func _1599053776_add_chat_id_and_typeDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
return a, nil
}
@@ -190,7 +190,7 @@ func _1599053776_add_chat_id_and_typeUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.up.sql", size: 264, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.up.sql", size: 264, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x7a, 0xf9, 0xc4, 0xa2, 0x96, 0x2e, 0xf9, 0x8f, 0x7, 0xf1, 0x1e, 0x73, 0x8a, 0xa6, 0x3a, 0x13, 0x4, 0x73, 0x82, 0x83, 0xb, 0xe3, 0xb5, 0x3b, 0x7e, 0xd, 0x23, 0xce, 0x98, 0xd4, 0xdc}}
return a, nil
}
@@ -210,7 +210,7 @@ func docGo() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc0, 0x2f, 0x1e, 0x64, 0x9, 0x93, 0xe4, 0x8b, 0xf2, 0x98, 0x5a, 0x45, 0xe2, 0x80, 0x88, 0x67, 0x7a, 0x2d, 0xd7, 0x4b, 0xd1, 0x73, 0xb6, 0x6d, 0x15, 0xc2, 0x0, 0x34, 0xcd, 0xa0, 0xdb, 0x20}}
return a, nil
}
diff --git a/protocol/pushnotificationserver/migrations/migrations.go b/protocol/pushnotificationserver/migrations/migrations.go
index 5c5d0f8a2f4..7e188d4d00a 100644
--- a/protocol/pushnotificationserver/migrations/migrations.go
+++ b/protocol/pushnotificationserver/migrations/migrations.go
@@ -88,7 +88,7 @@ func _1593601728_initial_schemaDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1593601728_initial_schema.down.sql", size: 200, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1593601728_initial_schema.down.sql", size: 200, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x88, 0x8a, 0x61, 0x81, 0x57, 0x45, 0x9b, 0x97, 0x9b, 0x1f, 0xf6, 0x94, 0x8a, 0x20, 0xb3, 0x2b, 0xff, 0x69, 0x49, 0xf4, 0x58, 0xcc, 0xd0, 0x55, 0xcc, 0x9a, 0x8b, 0xb6, 0x7f, 0x29, 0x53, 0xc1}}
return a, nil
}
@@ -108,7 +108,7 @@ func _1593601728_initial_schemaUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1593601728_initial_schema.up.sql", size: 675, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1593601728_initial_schema.up.sql", size: 675, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfd, 0x61, 0x90, 0x79, 0xd9, 0x14, 0x65, 0xe9, 0x96, 0x53, 0x17, 0x33, 0x54, 0xeb, 0x8b, 0x5d, 0x95, 0x99, 0x10, 0x36, 0x58, 0xdd, 0xb2, 0xbf, 0x45, 0xd9, 0xbb, 0xc4, 0x92, 0xe, 0xce, 0x2}}
return a, nil
}
@@ -128,7 +128,7 @@ func _1598419937_add_push_notifications_tableDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1598419937_add_push_notifications_table.down.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1598419937_add_push_notifications_table.down.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0x98, 0xc8, 0x30, 0x45, 0x5b, 0xc5, 0x7d, 0x13, 0x5d, 0xe7, 0xc8, 0x23, 0x43, 0xf7, 0xdc, 0x9c, 0xe2, 0xdd, 0x63, 0xf0, 0xb7, 0x16, 0x40, 0xc, 0xda, 0xb9, 0x16, 0x70, 0x2b, 0x5a, 0x7e}}
return a, nil
}
@@ -148,7 +148,7 @@ func _1598419937_add_push_notifications_tableUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1598419937_add_push_notifications_table.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "1598419937_add_push_notifications_table.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2, 0x3e, 0xef, 0xf, 0xc2, 0xdf, 0xbc, 0x99, 0x7a, 0xc2, 0xd3, 0x64, 0x4f, 0x4c, 0x7e, 0xfc, 0x2e, 0x8c, 0xa7, 0x54, 0xd3, 0x4d, 0x25, 0x98, 0x41, 0xbc, 0xea, 0xd7, 0x2, 0xc1, 0xd0, 0x52}}
return a, nil
}
@@ -168,7 +168,7 @@ func docGo() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc0, 0x2f, 0x1e, 0x64, 0x9, 0x93, 0xe4, 0x8b, 0xf2, 0x98, 0x5a, 0x45, 0xe2, 0x80, 0x88, 0x67, 0x7a, 0x2d, 0xd7, 0x4b, 0xd1, 0x73, 0xb6, 0x6d, 0x15, 0xc2, 0x0, 0x34, 0xcd, 0xa0, 0xdb, 0x20}}
return a, nil
}
diff --git a/protocol/transport/migrations/migrations.go b/protocol/transport/migrations/migrations.go
index 2c70b03f599..7ad03b71e96 100644
--- a/protocol/transport/migrations/migrations.go
+++ b/protocol/transport/migrations/migrations.go
@@ -89,7 +89,7 @@ func _1561059284_add_waku_keysDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1561059284_add_waku_keys.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1561059284_add_waku_keys.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0x2a, 0x7e, 0x9, 0xa3, 0xdd, 0xc6, 0x3, 0xfa, 0xaa, 0x98, 0xa0, 0x26, 0x5e, 0x67, 0x43, 0xe6, 0x20, 0xfd, 0x10, 0xfd, 0x60, 0x89, 0x17, 0x13, 0x87, 0x1b, 0x44, 0x36, 0x79, 0xb6, 0x60}}
return a, nil
}
@@ -109,7 +109,7 @@ func _1561059284_add_waku_keysUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1561059284_add_waku_keys.up.sql", size: 109, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1561059284_add_waku_keys.up.sql", size: 109, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x5c, 0x8, 0x32, 0xef, 0x12, 0x88, 0x21, 0xd, 0x7a, 0x42, 0x4d, 0xe7, 0x2d, 0x6c, 0x99, 0xb6, 0x1, 0xf1, 0xba, 0x2c, 0x40, 0x8d, 0xa9, 0x4b, 0xe6, 0xc4, 0x21, 0xec, 0x47, 0x6b, 0xf7}}
return a, nil
}
@@ -129,7 +129,7 @@ func _1616691080_add_wakuv2_keysDownSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x42, 0xb6, 0x23, 0x70, 0xb8, 0x63, 0x18, 0x61, 0xea, 0x35, 0x6e, 0xae, 0xe9, 0x71, 0x89, 0xa, 0xa5, 0x72, 0xa2, 0x64, 0xaa, 0x45, 0x1, 0xf, 0xfc, 0xee, 0x1b, 0xd9, 0xd2, 0x27, 0xf4, 0xe2}}
return a, nil
}
@@ -149,7 +149,7 @@ func _1616691080_add_wakuv2_keysUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0xf0, 0x97, 0x25, 0xfe, 0x96, 0x2c, 0xa8, 0x62, 0x4a, 0x71, 0x75, 0xff, 0x5f, 0x43, 0x1e, 0x71, 0x53, 0xf1, 0xde, 0xf, 0xcf, 0xcd, 0x87, 0x15, 0x61, 0x9d, 0x25, 0x2e, 0xaf, 0x18, 0x99}}
return a, nil
}
@@ -169,7 +169,7 @@ func _1634723014_add_wakuv2_keysUpSql() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "1634723014_add_wakuV2_keys.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "1634723014_add_wakuV2_keys.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xe1, 0x7a, 0x1e, 0x6, 0xad, 0x1b, 0x37, 0xdb, 0xea, 0x94, 0xaf, 0xe0, 0x7d, 0xc9, 0xd6, 0xda, 0x52, 0x71, 0x8a, 0x44, 0xb3, 0xa6, 0x7b, 0x1e, 0x90, 0xdb, 0x1e, 0x5a, 0xa, 0x40, 0x26}}
return a, nil
}
@@ -189,7 +189,7 @@ func docGo() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "doc.go", size: 373, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "doc.go", size: 373, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0x6a, 0xc1, 0xce, 0x94, 0xf6, 0xef, 0xf1, 0x97, 0x95, 0xb, 0x35, 0xaf, 0x5f, 0xe7, 0x5f, 0xac, 0x6e, 0xb8, 0xab, 0xba, 0xb5, 0x35, 0x97, 0x22, 0x36, 0x11, 0xce, 0x44, 0xfc, 0xfa, 0xac}}
return a, nil
}
diff --git a/server/handlers.go b/server/handlers.go
index 43eff4b5d1f..925f5495f13 100644
--- a/server/handlers.go
+++ b/server/handlers.go
@@ -3,6 +3,8 @@ package server
import (
"bytes"
"database/sql"
+ "encoding/json"
+ "fmt"
"image"
"net/http"
"net/url"
@@ -17,16 +19,18 @@ import (
"github.com/status-im/status-go/protocol/identity/colorhash"
"github.com/status-im/status-go/protocol/identity/identicon"
"github.com/status-im/status-go/protocol/identity/ring"
+ "github.com/status-im/status-go/protocol/protobuf"
)
const (
- basePath = "/messages"
- identiconsPath = basePath + "/identicons"
- imagesPath = basePath + "/images"
- audioPath = basePath + "/audio"
- ipfsPath = "/ipfs"
- discordAuthorsPath = "/discord/authors"
- discordAttachmentsPath = basePath + "/discord/attachments"
+ basePath = "/messages"
+ identiconsPath = basePath + "/identicons"
+ imagesPath = basePath + "/images"
+ audioPath = basePath + "/audio"
+ ipfsPath = "/ipfs"
+ discordAuthorsPath = "/discord/authors"
+ discordAttachmentsPath = basePath + "/discord/attachments"
+ LinkPreviewThumbnailPath = "/link-preview/thumbnail"
// Handler routes for pairing
accountImagesPath = "/accountImages"
@@ -455,3 +459,70 @@ func handleQRCodeGeneration(multiaccountsDB *multiaccounts.Database, logger *zap
}
}
}
+
+func getThumbnailPayload(db *sql.DB, logger *zap.Logger, msgID string, thumbnailURL string) ([]byte, error) {
+ var payload []byte
+
+ var result []byte
+ err := db.QueryRow(`SELECT unfurled_links FROM user_messages WHERE id = ?`, msgID).Scan(&result)
+ if err != nil {
+ return payload, fmt.Errorf("could not find message with message-id '%s': %w", msgID, err)
+ }
+
+ var links []*protobuf.UnfurledLink
+ err = json.Unmarshal(result, &links)
+ if err != nil {
+ return payload, fmt.Errorf("failed to unmarshal protobuf.UrlPreview: %w", err)
+ }
+
+ for _, p := range links {
+ if p.Url == thumbnailURL {
+ payload = p.ThumbnailPayload
+ break
+ }
+ }
+
+ return payload, nil
+}
+
+func handleLinkPreviewThumbnail(db *sql.DB, logger *zap.Logger) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ queryParams := r.URL.Query()
+
+ paramID, ok := queryParams["message-id"]
+ if !ok || len(paramID) == 0 {
+ http.Error(w, "missing query parameter 'message-id'", http.StatusBadRequest)
+ return
+ }
+
+ paramURL, ok := queryParams["url"]
+ if !ok || len(paramURL) == 0 {
+ http.Error(w, "missing query parameter 'url'", http.StatusBadRequest)
+ return
+ }
+
+ msgID := paramID[0]
+ thumbnailURL := paramURL[0]
+
+ thumbnail, err := getThumbnailPayload(db, logger, msgID, thumbnailURL)
+ if err != nil {
+ logger.Error("failed to get thumbnail", zap.String("msgID", msgID))
+ http.Error(w, "failed to get thumbnail", http.StatusInternalServerError)
+ return
+ }
+
+ mimeType, err := images.GetMimeType(thumbnail)
+ if err != nil {
+ http.Error(w, "mime type not supported", http.StatusNotImplemented)
+ return
+ }
+
+ w.Header().Set("Content-Type", "image/"+mimeType)
+ w.Header().Set("Cache-Control", "no-store")
+
+ _, err = w.Write(thumbnail)
+ if err != nil {
+ logger.Error("failed to write response", zap.Error(err))
+ }
+ }
+}
diff --git a/server/handlers_test.go b/server/handlers_test.go
new file mode 100644
index 00000000000..b7ed16b3904
--- /dev/null
+++ b/server/handlers_test.go
@@ -0,0 +1,133 @@
+package server
+
+import (
+ "database/sql"
+ "encoding/json"
+ "io/ioutil"
+ "net/http"
+ "net/http/httptest"
+ "net/url"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+ "go.uber.org/zap"
+
+ "github.com/status-im/status-go/logutils"
+ "github.com/status-im/status-go/protocol/common"
+ "github.com/status-im/status-go/protocol/protobuf"
+ "github.com/status-im/status-go/protocol/sqlite"
+)
+
+func setupTest(t *testing.T) (*sql.DB, *zap.Logger) {
+ dbPath, err := ioutil.TempFile("", "status-go-test-db-")
+ require.NoError(t, err)
+
+ db, err := sqlite.Open(dbPath.Name(), "", sqlite.ReducedKDFIterationsNumber)
+ require.NoError(t, err)
+
+ logger := logutils.ZapLogger()
+ return db, logger
+}
+
+func createUserMessage(t *testing.T, db *sql.DB, msg *common.Message) {
+ whisperTimestamp := 0
+ source := ""
+ text := ""
+ contentType := 0
+ timestamp := 0
+ chatID := "1"
+ localChatID := "1"
+ responseTo := ""
+ clockValue := 0
+
+ stmt, err := db.Prepare(`
+ INSERT INTO user_messages (
+ id,
+ whisper_timestamp,
+ source,
+ text,
+ content_type,
+ timestamp,
+ chat_id,
+ local_chat_id,
+ response_to,
+ clock_value,
+ unfurled_links
+ ) VALUES (?,?,?,?,?,?,?,?,?,?,?)
+ `)
+ require.NoError(t, err)
+
+ links, err := json.Marshal(msg.UnfurledLinks)
+ require.NoError(t, err)
+
+ _, err = stmt.Exec(
+ msg.ID,
+ whisperTimestamp,
+ source,
+ text,
+ contentType,
+ timestamp,
+ chatID,
+ localChatID,
+ responseTo,
+ clockValue,
+ links,
+ )
+ require.NoError(t, err)
+}
+
+func httpGetReqRecorder(t *testing.T, handler http.HandlerFunc, reqURL string) *httptest.ResponseRecorder {
+ req, err := http.NewRequest("GET", reqURL, nil)
+ require.NoError(t, err)
+
+ rr := httptest.NewRecorder()
+ handler.ServeHTTP(rr, req)
+
+ return rr
+}
+
+func TestHandleLinkPreviewThumbnail(t *testing.T) {
+ db, logger := setupTest(t)
+ previewURL := "https://github.com"
+
+ msg := common.Message{
+ ID: "1",
+ ChatMessage: protobuf.ChatMessage{
+ UnfurledLinks: []*protobuf.UnfurledLink{
+ {
+ Url: previewURL,
+ ThumbnailWidth: 100,
+ ThumbnailHeight: 200,
+ ThumbnailPayload: []byte{0xff, 0xd8, 0xff, 0xdb, 0x0, 0x84, 0x0, 0x50, 0x37, 0x3c, 0x46, 0x3c, 0x32, 0x50},
+ },
+ },
+ },
+ }
+ createUserMessage(t, db, &msg)
+
+ // Test happy path.
+ reqURL := "/dummy?" + url.Values{"message-id": {msg.ID}, "url": {previewURL}}.Encode()
+ rr := httpGetReqRecorder(t, handleLinkPreviewThumbnail(db, logger), reqURL)
+ require.Equal(t, http.StatusOK, rr.Code)
+ require.Equal(t, msg.UnfurledLinks[0].ThumbnailPayload, rr.Body.Bytes())
+ require.Equal(t, "image/jpeg", rr.HeaderMap.Get("Content-Type"))
+ require.Equal(t, "no-store", rr.HeaderMap.Get("Cache-Control"))
+
+ // Test bad requests.
+ reqURL = "/dummy?" + url.Values{"message-id": {msg.ID}}.Encode()
+ rr = httpGetReqRecorder(t, handleLinkPreviewThumbnail(db, logger), reqURL)
+ require.Equal(t, http.StatusBadRequest, rr.Code)
+ require.Equal(t, "missing query parameter 'url'\n", rr.Body.String())
+
+ reqURL = "/dummy?" + url.Values{"url": {previewURL}}.Encode()
+ rr = httpGetReqRecorder(t, handleLinkPreviewThumbnail(db, logger), reqURL)
+ require.Equal(t, http.StatusBadRequest, rr.Code)
+ require.Equal(t, "missing query parameter 'message-id'\n", rr.Body.String())
+
+ // Test mime type not supported.
+ msg.UnfurledLinks[0].ThumbnailPayload = []byte("unsupported image")
+ createUserMessage(t, db, &msg)
+ reqURL = "/dummy?" + url.Values{"message-id": {msg.ID}, "url": {previewURL}}.Encode()
+ rr = httpGetReqRecorder(t, handleLinkPreviewThumbnail(db, logger), reqURL)
+ require.Equal(t, http.StatusNotImplemented, rr.Code)
+}
diff --git a/server/server_media.go b/server/server_media.go
index 61e86fa2095..6a5939cb739 100644
--- a/server/server_media.go
+++ b/server/server_media.go
@@ -37,15 +37,16 @@ func NewMediaServer(db *sql.DB, downloader *ipfs.Downloader, multiaccountsDB *mu
multiaccountsDB: multiaccountsDB,
}
s.SetHandlers(HandlerPatternMap{
- imagesPath: handleImage(s.db, s.logger),
- audioPath: handleAudio(s.db, s.logger),
- identiconsPath: handleIdenticon(s.logger),
- ipfsPath: handleIPFS(s.downloader, s.logger),
- accountImagesPath: handleAccountImages(s.multiaccountsDB, s.logger),
- contactImagesPath: handleContactImages(s.db, s.logger),
- discordAuthorsPath: handleDiscordAuthorAvatar(s.db, s.logger),
- discordAttachmentsPath: handleDiscordAttachment(s.db, s.logger),
- generateQRCode: handleQRCodeGeneration(s.multiaccountsDB, s.logger),
+ accountImagesPath: handleAccountImages(s.multiaccountsDB, s.logger),
+ audioPath: handleAudio(s.db, s.logger),
+ contactImagesPath: handleContactImages(s.db, s.logger),
+ discordAttachmentsPath: handleDiscordAttachment(s.db, s.logger),
+ discordAuthorsPath: handleDiscordAuthorAvatar(s.db, s.logger),
+ generateQRCode: handleQRCodeGeneration(s.multiaccountsDB, s.logger),
+ identiconsPath: handleIdenticon(s.logger),
+ imagesPath: handleImage(s.db, s.logger),
+ ipfsPath: handleIPFS(s.downloader, s.logger),
+ LinkPreviewThumbnailPath: handleLinkPreviewThumbnail(s.db, s.logger),
})
return s, nil
@@ -73,6 +74,13 @@ func (s *MediaServer) MakeImageURL(id string) string {
return u.String()
}
+func (s *MediaServer) MakeLinkPreviewThumbnailURL(msgID string, previewURL string) string {
+ u := s.MakeBaseURL()
+ u.Path = LinkPreviewThumbnailPath
+ u.RawQuery = url.Values{"message-id": {msgID}, "url": {previewURL}}.Encode()
+ return u.String()
+}
+
func (s *MediaServer) MakeDiscordAuthorAvatarURL(authorID string) string {
u := s.MakeBaseURL()
u.Path = discordAuthorsPath
diff --git a/server/server_test.go b/server/server_test.go
index 38d110064ac..7647eb8a672 100644
--- a/server/server_test.go
+++ b/server/server_test.go
@@ -115,6 +115,16 @@ func (s *ServerURLSuite) TestServer_MakeImageURL() {
s.serverNoPort.MakeImageURL("0x10aded70ffee"))
}
+func (s *ServerURLSuite) TestServer_MakeLinkPreviewThumbnailURL() {
+ s.Require().Equal(
+ baseURLWithCustomPort+"/link-preview/thumbnail?message-id=99&url=https%3A%2F%2Fgithub.com",
+ s.server.MakeLinkPreviewThumbnailURL("99", "https://github.com"))
+
+ s.testNoPort(
+ baseURLWithDefaultPort+"/link-preview/thumbnail?message-id=99&url=https%3A%2F%2Fgithub.com",
+ s.serverNoPort.MakeLinkPreviewThumbnailURL("99", "https://github.com"))
+}
+
func (s *ServerURLSuite) TestServer_MakeAudioURL() {
s.Require().Equal(
baseURLWithCustomPort+"/messages/audio?messageId=0xde1e7ebee71e",
diff --git a/services/ext/api.go b/services/ext/api.go
index a606c51dada..f85e94da613 100644
--- a/services/ext/api.go
+++ b/services/ext/api.go
@@ -25,6 +25,7 @@ import (
"github.com/status-im/status-go/protocol/communities"
"github.com/status-im/status-go/protocol/discord"
"github.com/status-im/status-go/protocol/encryption/multidevice"
+ "github.com/status-im/status-go/protocol/linkpreview"
"github.com/status-im/status-go/protocol/protobuf"
"github.com/status-im/status-go/protocol/pushnotificationclient"
"github.com/status-im/status-go/protocol/requests"
@@ -1082,8 +1083,6 @@ func (api *PublicAPI) EmojiReactionsByChatIDMessageID(chatID string, messageID s
return api.service.messenger.EmojiReactionsByChatIDMessageID(chatID, messageID)
}
-// Urls
-
func (api *PublicAPI) GetLinkPreviewWhitelist() []urls.Site {
return urls.LinkPreviewWhitelist()
}
@@ -1092,6 +1091,20 @@ func (api *PublicAPI) GetLinkPreviewData(link string) (previewData urls.LinkPrev
return urls.GetLinkPreviewData(link)
}
+// GetTextURLs parses text and returns a deduplicated and (somewhat) normalized
+// slice of URLs. The returned URLs can be used as cache keys by clients.
+func (api *PublicAPI) GetTextURLs(text string) []string {
+ return linkpreview.GetURLs(text)
+}
+
+// UnfurlURLs uses a best-effort approach to unfurl each URL. Failed URLs will
+// be removed from the response.
+//
+// This endpoint expects the client to send URLs normalized by GetTextURLs.
+func (api *PublicAPI) UnfurlURLs(urls []string) ([]common.LinkPreview, error) {
+ return api.service.messenger.UnfurlURLs(urls)
+}
+
func (api *PublicAPI) EnsVerified(pk, ensName string) error {
return api.service.messenger.ENSVerified(pk, ensName)
}
diff --git a/static/bindata.go b/static/bindata.go
index 860032d3dea..bb11f5bc5ab 100644
--- a/static/bindata.go
+++ b/static/bindata.go
@@ -104,7 +104,7 @@ func emojisTxt() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "emojis.txt", size: 28134, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "emojis.txt", size: 28134, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x28, 0xc, 0x22, 0x34, 0xa1, 0xeb, 0x8, 0x8d, 0xef, 0x38, 0x1b, 0xd8, 0xc2, 0x1a, 0x6d, 0xa2, 0x62, 0xad, 0x43, 0xfc, 0x1c, 0x38, 0xda, 0x8c, 0x3f, 0x34, 0xa, 0x8c, 0x6f, 0x5d, 0xd8}}
return a, nil
}
@@ -124,7 +124,7 @@ func ConfigReadmeMd() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/README.md", size: 3031, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "../config/README.md", size: 3031, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x15, 0x44, 0x2b, 0x13, 0x14, 0x34, 0xa, 0x66, 0x62, 0x1b, 0xc6, 0x4a, 0x2c, 0x7d, 0x4d, 0x89, 0xfb, 0xc9, 0x69, 0xe4, 0x18, 0x5f, 0x3, 0x98, 0x6d, 0x3c, 0x9e, 0xa8, 0xcd, 0x53, 0x5d, 0x75}}
return a, nil
}
@@ -144,7 +144,7 @@ func ConfigCliAnonMetricNodeClientJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/cli/anon-metric-node-client.json", size: 857, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "../config/cli/anon-metric-node-client.json", size: 857, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x90, 0xdf, 0xcd, 0xc8, 0x92, 0x1d, 0x63, 0x5e, 0xe1, 0xf9, 0x7f, 0xed, 0xf2, 0x68, 0x6b, 0x20, 0xff, 0x1d, 0x3b, 0xc9, 0x7b, 0xb9, 0x6a, 0xba, 0xd3, 0xbd, 0xf7, 0x48, 0x7b, 0x5a, 0x52, 0x79}}
return a, nil
}
@@ -164,7 +164,7 @@ func ConfigCliAnonMetricNodeServerJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/cli/anon-metric-node-server.json", size: 696, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "../config/cli/anon-metric-node-server.json", size: 696, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf0, 0x2f, 0x97, 0xab, 0x77, 0x61, 0x93, 0x9d, 0x1f, 0x33, 0x18, 0x72, 0xad, 0xce, 0xa3, 0x35, 0xa9, 0x44, 0xbf, 0x29, 0xa8, 0xea, 0x21, 0xb7, 0x22, 0x7f, 0x7d, 0x3a, 0x6b, 0x55, 0x3c, 0x66}}
return a, nil
}
@@ -184,7 +184,7 @@ func ConfigCliFleetEthProdJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/cli/fleet-eth.prod.json", size: 4470, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "../config/cli/fleet-eth.prod.json", size: 4470, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0x7b, 0x71, 0xe3, 0x8a, 0xb0, 0x7f, 0xc3, 0xe, 0xd2, 0x67, 0x38, 0x50, 0xf4, 0x27, 0xaa, 0xec, 0x47, 0xa1, 0x1, 0xf7, 0x5d, 0xe9, 0x8f, 0x3c, 0x35, 0x9f, 0xdb, 0x9b, 0x30, 0x88, 0x26}}
return a, nil
}
@@ -204,7 +204,7 @@ func ConfigCliFleetEthStagingJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/cli/fleet-eth.staging.json", size: 2145, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "../config/cli/fleet-eth.staging.json", size: 2145, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa2, 0xe9, 0x85, 0x4b, 0x66, 0xa4, 0x1d, 0x4e, 0xaf, 0x21, 0xd7, 0xc2, 0x59, 0xf7, 0xd, 0xc2, 0x61, 0x4e, 0x4a, 0x9e, 0x38, 0x90, 0x6a, 0x2a, 0x16, 0xa6, 0x5c, 0x6d, 0x0, 0x5, 0x6, 0xb3}}
return a, nil
}
@@ -224,7 +224,7 @@ func ConfigCliFleetEthTestJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/cli/fleet-eth.test.json", size: 2174, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "../config/cli/fleet-eth.test.json", size: 2174, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x55, 0x19, 0xca, 0x8d, 0xaa, 0x69, 0x9b, 0xa2, 0xa1, 0xdd, 0xef, 0xf2, 0x63, 0x5e, 0xcd, 0xe2, 0x8f, 0xc7, 0x37, 0x7e, 0x41, 0xa1, 0xc1, 0x3f, 0x65, 0x80, 0xa, 0xa4, 0x27, 0x74, 0x8d, 0xc6}}
return a, nil
}
@@ -244,7 +244,7 @@ func ConfigCliFleetStatusProdJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/cli/fleet-status.prod.json", size: 1920, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "../config/cli/fleet-status.prod.json", size: 1920, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5, 0xf, 0x4a, 0x61, 0xd2, 0xfd, 0x7d, 0x59, 0xcf, 0x49, 0x81, 0x6, 0x71, 0xdb, 0x63, 0xe8, 0xeb, 0xdf, 0x9e, 0x65, 0x22, 0xae, 0x9b, 0xb0, 0x16, 0x17, 0xe0, 0x52, 0xe6, 0xb, 0xcf, 0x88}}
return a, nil
}
@@ -264,7 +264,7 @@ func ConfigCliFleetStatusTestJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/cli/fleet-status.test.json", size: 937, mode: os.FileMode(0644), modTime: time.Unix(1675323803, 0)}
+ info := bindataFileInfo{name: "../config/cli/fleet-status.test.json", size: 937, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5c, 0x3b, 0xc5, 0xd2, 0xe9, 0xd3, 0x52, 0xd4, 0x5a, 0xf3, 0xed, 0x37, 0xed, 0xde, 0xda, 0xc1, 0x57, 0x37, 0x17, 0x8c, 0x40, 0xee, 0x12, 0x82, 0x14, 0x2c, 0x8b, 0xc7, 0x4b, 0x2, 0xf8, 0x82}}
return a, nil
}
@@ -284,7 +284,7 @@ func ConfigCliFleetWakuv2ProdJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.prod.json", size: 747, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.prod.json", size: 747, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc3, 0x81, 0x84, 0xfd, 0x7d, 0x7e, 0x27, 0xc8, 0x5e, 0xb6, 0x38, 0xe1, 0x6, 0xa, 0xbc, 0x86, 0x87, 0x54, 0xa2, 0x2f, 0xe1, 0xa1, 0xc8, 0x6, 0x80, 0xfa, 0xed, 0xfe, 0x13, 0x6c, 0x81, 0xd9}}
return a, nil
}
@@ -304,7 +304,7 @@ func ConfigCliFleetWakuv2TestJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.test.json", size: 748, mode: os.FileMode(0644), modTime: time.Unix(1645666387, 0)}
+ info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.test.json", size: 748, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x6d, 0x28, 0xb7, 0xc2, 0xf3, 0x22, 0xe3, 0x6d, 0xc1, 0xeb, 0x4b, 0x42, 0xe2, 0x6, 0xb0, 0x60, 0x30, 0xdb, 0xe3, 0x26, 0xff, 0x9, 0xf5, 0xea, 0xe6, 0x56, 0xce, 0xa8, 0x98, 0x61, 0x70}}
return a, nil
}
@@ -324,7 +324,7 @@ func ConfigCliLesEnabledJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/cli/les-enabled.json", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "../config/cli/les-enabled.json", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xee, 0x27, 0xa7, 0x74, 0xa0, 0x46, 0xa1, 0x41, 0xed, 0x4d, 0x16, 0x5b, 0xf3, 0xf0, 0x7c, 0xc8, 0x2f, 0x6f, 0x47, 0xa4, 0xbb, 0x5f, 0x43, 0x33, 0xd, 0x9, 0x9d, 0xea, 0x9e, 0x15, 0xee}}
return a, nil
}
@@ -344,7 +344,7 @@ func ConfigCliMailserverEnabledJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/cli/mailserver-enabled.json", size: 176, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "../config/cli/mailserver-enabled.json", size: 176, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xec, 0x81, 0x8b, 0x99, 0xb6, 0xdb, 0xc0, 0x8b, 0x46, 0x97, 0x96, 0xc7, 0x58, 0x30, 0x33, 0xef, 0x54, 0x25, 0x87, 0x7b, 0xb9, 0x94, 0x6b, 0x18, 0xa4, 0x5b, 0x58, 0x67, 0x7c, 0x44, 0xa6}}
return a, nil
}
@@ -364,7 +364,7 @@ func ConfigStatusChainGenesisJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "../config/status-chain-genesis.json", size: 612, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "../config/status-chain-genesis.json", size: 612, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb, 0xf0, 0xc, 0x1, 0x95, 0x65, 0x6, 0x55, 0x48, 0x8f, 0x83, 0xa0, 0xb4, 0x81, 0xda, 0xad, 0x30, 0x6d, 0xb2, 0x78, 0x1b, 0x26, 0x4, 0x13, 0x12, 0x9, 0x6, 0xae, 0x3a, 0x2c, 0x1, 0x71}}
return a, nil
}
@@ -384,7 +384,7 @@ func keysBootnodeKey() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x31, 0xcf, 0x27, 0xd4, 0x96, 0x2e, 0x32, 0xcd, 0x58, 0x96, 0x2a, 0xe5, 0x8c, 0xa0, 0xf1, 0x73, 0x1f, 0xd6, 0xd6, 0x8b, 0xb, 0x73, 0xd3, 0x2c, 0x84, 0x1a, 0x56, 0xa4, 0x74, 0xb6, 0x95, 0x20}}
return a, nil
}
@@ -404,7 +404,7 @@ func keysFirebaseauthkey() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe, 0x69, 0x23, 0x64, 0x7d, 0xf9, 0x14, 0x37, 0x6f, 0x2b, 0x1, 0xf0, 0xb0, 0xa4, 0xb2, 0xd0, 0x18, 0xcd, 0xf9, 0xeb, 0x57, 0xa3, 0xfd, 0x79, 0x25, 0xa7, 0x9c, 0x3, 0xce, 0x26, 0xec, 0xe1}}
return a, nil
}
@@ -424,7 +424,7 @@ func keysTestAccount1StatusChainPk() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0xba, 0x35, 0x1, 0x2b, 0x9d, 0xad, 0xf0, 0x2d, 0x3c, 0x4d, 0x6, 0xb5, 0x22, 0x2, 0x47, 0xd4, 0x1c, 0xf4, 0x31, 0x2f, 0xb, 0x5b, 0x27, 0x5d, 0x43, 0x97, 0x58, 0x2d, 0xf0, 0xe1, 0xbe}}
return a, nil
}
@@ -444,7 +444,7 @@ func keysTestAccount1Pk() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9, 0x43, 0xc2, 0xf4, 0x8c, 0xc6, 0x64, 0x25, 0x8c, 0x7, 0x8c, 0xa8, 0x89, 0x2b, 0x7b, 0x9b, 0x4f, 0x81, 0xcb, 0xce, 0x3d, 0xef, 0x82, 0x9c, 0x27, 0x27, 0xa9, 0xc5, 0x46, 0x70, 0x30, 0x38}}
return a, nil
}
@@ -464,7 +464,7 @@ func keysTestAccount2StatusChainPk() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9, 0xf8, 0x5c, 0xe9, 0x92, 0x96, 0x2d, 0x88, 0x2b, 0x8e, 0x42, 0x3f, 0xa4, 0x93, 0x6c, 0xad, 0xe9, 0xc0, 0x1b, 0x8a, 0x8, 0x8c, 0x5e, 0x7a, 0x84, 0xa2, 0xf, 0x9f, 0x77, 0x58, 0x2c, 0x2c}}
return a, nil
}
@@ -484,7 +484,7 @@ func keysTestAccount2Pk() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9f, 0x72, 0xd5, 0x95, 0x5c, 0x5a, 0x99, 0x9d, 0x2f, 0x21, 0x83, 0xd7, 0x10, 0x17, 0x4a, 0x3d, 0x65, 0xc9, 0x26, 0x1a, 0x2c, 0x9d, 0x65, 0x63, 0xd2, 0xa0, 0xfc, 0x7c, 0x0, 0x87, 0x38, 0x9f}}
return a, nil
}
@@ -504,7 +504,7 @@ func keysTestAccount3BeforeEip55Pk() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x40, 0x56, 0xc1, 0x5e, 0x10, 0x6e, 0x28, 0x15, 0x3, 0x4e, 0xc4, 0xc4, 0x71, 0x4d, 0x16, 0x99, 0xcc, 0x1b, 0x63, 0xee, 0x10, 0x20, 0xe4, 0x59, 0x52, 0x3f, 0xc0, 0xad, 0x15, 0x13, 0x72}}
return a, nil
}
diff --git a/t/bindata.go b/t/bindata.go
index ce13104d9ef..eb68dcd30f7 100644
--- a/t/bindata.go
+++ b/t/bindata.go
@@ -86,7 +86,7 @@ func configPublicChainAccountsJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "config/public-chain-accounts.json", size: 307, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "config/public-chain-accounts.json", size: 307, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x76, 0x5d, 0xc0, 0xfe, 0x57, 0x50, 0x18, 0xec, 0x2d, 0x61, 0x1b, 0xa9, 0x81, 0x11, 0x5f, 0x77, 0xf7, 0xb6, 0x67, 0x82, 0x1, 0x40, 0x68, 0x9d, 0xc5, 0x41, 0xaf, 0xce, 0x43, 0x81, 0x92, 0x96}}
return a, nil
}
@@ -106,7 +106,7 @@ func configStatusChainAccountsJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "config/status-chain-accounts.json", size: 543, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "config/status-chain-accounts.json", size: 543, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0xb3, 0x61, 0x51, 0x70, 0x3c, 0x12, 0x3e, 0xf1, 0x1c, 0x81, 0xfb, 0x9a, 0x7c, 0xe3, 0x63, 0xd0, 0x8f, 0x12, 0xc5, 0x2d, 0xf4, 0xea, 0x27, 0x33, 0xef, 0xca, 0xf9, 0x3f, 0x72, 0x44, 0xbf}}
return a, nil
}
@@ -126,7 +126,7 @@ func configTestDataJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "config/test-data.json", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)}
+ info := bindataFileInfo{name: "config/test-data.json", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xce, 0x9d, 0x80, 0xf5, 0x87, 0xfa, 0x57, 0x1d, 0xa1, 0xd5, 0x7a, 0x10, 0x3, 0xac, 0xd7, 0xf4, 0x64, 0x32, 0x96, 0x2b, 0xb7, 0x21, 0xb7, 0xa6, 0x80, 0x40, 0xe9, 0x65, 0xe3, 0xd6, 0xbd, 0x40}}
return a, nil
}