feature: Unfurl status links (#4033)
This commit is contained in:
parent
ac813ef5d8
commit
aded258ccb
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -86,7 +86,7 @@ func _1557732988_initialize_dbDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1557732988_initialize_db.down.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1557732988_initialize_db.down.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -106,7 +106,7 @@ func _1557732988_initialize_dbUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1557732988_initialize_db.up.sql", size: 278, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1557732988_initialize_db.up.sql", size: 278, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ func staticGo() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "static.go", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "static.go", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,7 @@ func _0001_accountsDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "0001_accounts.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "0001_accounts.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ func _0001_accountsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "0001_accounts.up.sql", size: 163, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "0001_accounts.up.sql", size: 163, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -136,7 +136,7 @@ func _1605007189_identity_imagesDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1605007189_identity_images.down.sql", size: 29, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1605007189_identity_images.down.sql", size: 29, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -156,7 +156,7 @@ func _1605007189_identity_imagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1605007189_identity_images.up.sql", size: 268, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1605007189_identity_images.up.sql", size: 268, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -176,7 +176,7 @@ func _1606224181_drop_photo_path_from_accountsDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.down.sql", size: 892, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.down.sql", size: 892, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -196,7 +196,7 @@ func _1606224181_drop_photo_path_from_accountsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.up.sql", size: 866, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.up.sql", size: 866, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -216,7 +216,7 @@ func _1648646095_image_clockDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1648646095_image_clock.down.sql", size: 939, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1648646095_image_clock.down.sql", size: 939, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -236,7 +236,7 @@ func _1648646095_image_clockUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1648646095_image_clock.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1648646095_image_clock.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -256,7 +256,7 @@ func _1649317600_add_color_hashUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1649317600_add_color_hash.up.sql", size: 201, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1649317600_add_color_hash.up.sql", size: 201, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -276,7 +276,7 @@ func _1660238799_accounts_kdfUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1660238799_accounts_kdf.up.sql", size: 115, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1660238799_accounts_kdf.up.sql", size: 115, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -296,7 +296,7 @@ func _1679505708_add_customization_colorUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1679505708_add_customization_color.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1679505708_add_customization_color.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -316,7 +316,7 @@ func _1687853321_add_customization_color_updated_atUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1687853321_add_customization_color_updated_at.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1687853321_add_customization_color_updated_at.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0xc2, 0x9, 0xec, 0xf4, 0xd1, 0x46, 0x29, 0xc5, 0xce, 0x4d, 0xd4, 0xf, 0x9c, 0xfa, 0x62, 0x1, 0x29, 0xe6, 0xd2, 0xd5, 0xe, 0xf0, 0x27, 0x81, 0x4a, 0x82, 0x25, 0x5f, 0x67, 0xff, 0xd1}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0xc2, 0x9, 0xec, 0xf4, 0xd1, 0x46, 0x29, 0xc5, 0xce, 0x4d, 0xd4, 0xf, 0x9c, 0xfa, 0x62, 0x1, 0x29, 0xe6, 0xd2, 0xd5, 0xe, 0xf0, 0x27, 0x81, 0x4a, 0x82, 0x25, 0x5f, 0x67, 0xff, 0xd1}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -336,7 +336,7 @@ func docGo() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ func _1619446565_postgres_make_anon_metrics_tableDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -106,7 +106,7 @@ func _1619446565_postgres_make_anon_metrics_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.up.sql", size: 443, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.up.sql", size: 443, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ func docGo() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "doc.go", size: 380, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "doc.go", size: 380, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
package common
|
||||||
|
|
||||||
|
type MediaServerImageIDPrefix string
|
||||||
|
type MediaServerImageIDPostfix string
|
||||||
|
type MediaServerImageID string
|
||||||
|
|
||||||
|
func CreateImageID(prefix MediaServerImageIDPrefix, postfix MediaServerImageIDPostfix) MediaServerImageID {
|
||||||
|
return MediaServerImageID(string(prefix) + string(postfix))
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
MediaServerIconPostfix MediaServerImageIDPostfix = "icon"
|
||||||
|
MediaServerBannerPostfix MediaServerImageIDPostfix = "banner"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
MediaServerContactPrefix MediaServerImageIDPrefix = "contact-"
|
||||||
|
MediaServerCommunityPrefix MediaServerImageIDPrefix = "community-"
|
||||||
|
MediaServerChannelCommunityPrefix MediaServerImageIDPrefix = "community-channel-"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
MediaServerContactIcon = MediaServerImageID(string(MediaServerContactPrefix) + string(MediaServerIconPostfix))
|
||||||
|
MediaServerCommunityIcon = MediaServerImageID(string(MediaServerCommunityPrefix) + string(MediaServerIconPostfix))
|
||||||
|
MediaServerCommunityBanner = MediaServerImageID(string(MediaServerCommunityPrefix) + string(MediaServerBannerPostfix))
|
||||||
|
MediaServerChannelCommunityIcon = MediaServerImageID(string(MediaServerChannelCommunityPrefix) + string(MediaServerIconPostfix))
|
||||||
|
MediaServerChannelCommunityBanner = MediaServerImageID(string(MediaServerChannelCommunityPrefix) + string(MediaServerBannerPostfix))
|
||||||
|
)
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/url"
|
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"unicode"
|
"unicode"
|
||||||
|
@ -82,26 +81,6 @@ const (
|
||||||
ContactVerificationStateCanceled
|
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 {
|
|
||||||
Type protobuf.UnfurledLink_LinkType `json:"type"`
|
|
||||||
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"
|
const EveryoneMentionTag = "0x00001"
|
||||||
|
|
||||||
type CommandParameters struct {
|
type CommandParameters struct {
|
||||||
|
@ -219,8 +198,9 @@ type Message struct {
|
||||||
Replied bool `json:"replied"`
|
Replied bool `json:"replied"`
|
||||||
|
|
||||||
// Links is an array of links within given message
|
// Links is an array of links within given message
|
||||||
Links []string
|
Links []string
|
||||||
LinkPreviews []LinkPreview `json:"linkPreviews"`
|
LinkPreviews []LinkPreview `json:"linkPreviews"`
|
||||||
|
StatusLinkPreviews []StatusLinkPreview `json:"statusLinkPreviews"`
|
||||||
|
|
||||||
// EditedAt indicates the clock value it was edited
|
// EditedAt indicates the clock value it was edited
|
||||||
EditedAt uint64 `json:"editedAt"`
|
EditedAt uint64 `json:"editedAt"`
|
||||||
|
@ -292,6 +272,7 @@ func (m *Message) MarshalJSON() ([]byte, error) {
|
||||||
Replied bool `json:"replied,omitempty"`
|
Replied bool `json:"replied,omitempty"`
|
||||||
Links []string `json:"links,omitempty"`
|
Links []string `json:"links,omitempty"`
|
||||||
LinkPreviews []LinkPreview `json:"linkPreviews,omitempty"`
|
LinkPreviews []LinkPreview `json:"linkPreviews,omitempty"`
|
||||||
|
StatusLinkPreviews []StatusLinkPreview `json:"statusLinkPreviews,omitempty"`
|
||||||
EditedAt uint64 `json:"editedAt,omitempty"`
|
EditedAt uint64 `json:"editedAt,omitempty"`
|
||||||
Deleted bool `json:"deleted,omitempty"`
|
Deleted bool `json:"deleted,omitempty"`
|
||||||
DeletedBy string `json:"deletedBy,omitempty"`
|
DeletedBy string `json:"deletedBy,omitempty"`
|
||||||
|
@ -331,6 +312,7 @@ func (m *Message) MarshalJSON() ([]byte, error) {
|
||||||
Replied: m.Replied,
|
Replied: m.Replied,
|
||||||
Links: m.Links,
|
Links: m.Links,
|
||||||
LinkPreviews: m.LinkPreviews,
|
LinkPreviews: m.LinkPreviews,
|
||||||
|
StatusLinkPreviews: m.StatusLinkPreviews,
|
||||||
MessageType: m.MessageType,
|
MessageType: m.MessageType,
|
||||||
CommandParameters: m.CommandParameters,
|
CommandParameters: m.CommandParameters,
|
||||||
GapParameters: m.GapParameters,
|
GapParameters: m.GapParameters,
|
||||||
|
@ -763,98 +745,6 @@ func (m *Message) LoadImage() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func isValidLinkPreviewThumbnail(thumbnail LinkPreviewThumbnail) bool {
|
|
||||||
return (thumbnail.DataURI == "" && thumbnail.Width == 0 && thumbnail.Height == 0) ||
|
|
||||||
(thumbnail.DataURI != "" && thumbnail.Width > 0 && thumbnail.Height > 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
func isValidLinkPreviewForProto(preview LinkPreview) bool {
|
|
||||||
switch preview.Type {
|
|
||||||
case protobuf.UnfurledLink_IMAGE:
|
|
||||||
return preview.URL != "" && isValidLinkPreviewThumbnail(preview.Thumbnail)
|
|
||||||
default: // Validate as a link type by default.
|
|
||||||
return preview.Title != "" && preview.URL != "" && isValidLinkPreviewThumbnail(preview.Thumbnail)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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{
|
|
||||||
Type: preview.Type,
|
|
||||||
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,
|
|
||||||
Type: link.Type,
|
|
||||||
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 {
|
func (m *Message) SetAlbumIDAndImagesCount(albumID string, imagesCount uint32) error {
|
||||||
imageMessage := m.GetImage()
|
imageMessage := m.GetImage()
|
||||||
if imageMessage == nil {
|
if imageMessage == nil {
|
||||||
|
|
|
@ -0,0 +1,470 @@
|
||||||
|
package common
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
|
||||||
|
"github.com/status-im/status-go/images"
|
||||||
|
"github.com/status-im/status-go/protocol/protobuf"
|
||||||
|
)
|
||||||
|
|
||||||
|
type MakeMediaServerURLType func(msgID string, previewURL string, imageID MediaServerImageID) string
|
||||||
|
type MakeMediaServerURLMessageWrapperType func(previewURL string, imageID MediaServerImageID) string
|
||||||
|
|
||||||
|
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 {
|
||||||
|
Type protobuf.UnfurledLink_LinkType `json:"type"`
|
||||||
|
URL string `json:"url"`
|
||||||
|
Hostname string `json:"hostname"`
|
||||||
|
Title string `json:"title,omitempty"`
|
||||||
|
Description string `json:"description,omitempty"`
|
||||||
|
Thumbnail LinkPreviewThumbnail `json:"thumbnail,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type StatusContactLinkPreview struct {
|
||||||
|
PublicKey string `json:"publicKey"`
|
||||||
|
DisplayName string `json:"displayName"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Icon LinkPreviewThumbnail `json:"icon,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type StatusCommunityLinkPreview struct {
|
||||||
|
CommunityID string `json:"communityId"`
|
||||||
|
DisplayName string `json:"displayName"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
MembersCount uint32 `json:"membersCount"`
|
||||||
|
Color string `json:"color"`
|
||||||
|
Icon LinkPreviewThumbnail `json:"icon,omitempty"`
|
||||||
|
Banner LinkPreviewThumbnail `json:"banner,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type StatusCommunityChannelLinkPreview struct {
|
||||||
|
ChannelUUID string `json:"channelUuid"`
|
||||||
|
Emoji string `json:"emoji"`
|
||||||
|
DisplayName string `json:"displayName"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Color string `json:"color"`
|
||||||
|
Community *StatusCommunityLinkPreview `json:"community"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type StatusLinkPreview struct {
|
||||||
|
URL string `json:"url,omitempty"`
|
||||||
|
Contact *StatusContactLinkPreview `json:"contact,omitempty"`
|
||||||
|
Community *StatusCommunityLinkPreview `json:"community,omitempty"`
|
||||||
|
Channel *StatusCommunityChannelLinkPreview `json:"channel,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (thumbnail *LinkPreviewThumbnail) IsEmpty() bool {
|
||||||
|
return thumbnail.Width == 0 &&
|
||||||
|
thumbnail.Height == 0 &&
|
||||||
|
thumbnail.URL == "" &&
|
||||||
|
thumbnail.DataURI == ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (thumbnail *LinkPreviewThumbnail) clear() {
|
||||||
|
thumbnail.Width = 0
|
||||||
|
thumbnail.Height = 0
|
||||||
|
thumbnail.URL = ""
|
||||||
|
thumbnail.DataURI = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (thumbnail *LinkPreviewThumbnail) validateForProto() error {
|
||||||
|
if thumbnail.DataURI == "" {
|
||||||
|
if thumbnail.Width == 0 && thumbnail.Height == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return fmt.Errorf("dataUri is empty, but width/height are not zero")
|
||||||
|
}
|
||||||
|
|
||||||
|
if thumbnail.Width == 0 || thumbnail.Height == 0 {
|
||||||
|
return fmt.Errorf("dataUri is not empty, but width/heigth are zero")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (thumbnail *LinkPreviewThumbnail) convertToProto() (*protobuf.UnfurledLinkThumbnail, error) {
|
||||||
|
var payload []byte
|
||||||
|
var err error
|
||||||
|
if thumbnail.DataURI != "" {
|
||||||
|
payload, err = images.GetPayloadFromURI(thumbnail.DataURI)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not get data URI payload, url='%s': %w", thumbnail.URL, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return &protobuf.UnfurledLinkThumbnail{
|
||||||
|
Width: uint32(thumbnail.Width),
|
||||||
|
Height: uint32(thumbnail.Height),
|
||||||
|
Payload: payload,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (thumbnail *LinkPreviewThumbnail) loadFromProto(
|
||||||
|
input *protobuf.UnfurledLinkThumbnail,
|
||||||
|
URL string,
|
||||||
|
imageID MediaServerImageID,
|
||||||
|
makeMediaServerURL MakeMediaServerURLMessageWrapperType) {
|
||||||
|
|
||||||
|
thumbnail.clear()
|
||||||
|
thumbnail.Width = int(input.Width)
|
||||||
|
thumbnail.Height = int(input.Height)
|
||||||
|
|
||||||
|
if len(input.Payload) > 0 {
|
||||||
|
thumbnail.URL = makeMediaServerURL(URL, imageID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (preview *LinkPreview) validateForProto() error {
|
||||||
|
switch preview.Type {
|
||||||
|
case protobuf.UnfurledLink_IMAGE:
|
||||||
|
if preview.URL == "" {
|
||||||
|
return fmt.Errorf("empty url")
|
||||||
|
}
|
||||||
|
if err := preview.Thumbnail.validateForProto(); err != nil {
|
||||||
|
return fmt.Errorf("thumbnail is not valid for proto: %w", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
default: // Validate as a link type by default.
|
||||||
|
if preview.Title == "" {
|
||||||
|
return fmt.Errorf("title is empty")
|
||||||
|
}
|
||||||
|
if preview.URL == "" {
|
||||||
|
return fmt.Errorf("url is empty")
|
||||||
|
}
|
||||||
|
if err := preview.Thumbnail.validateForProto(); err != nil {
|
||||||
|
return fmt.Errorf("thumbnail is not valid for proto: %w", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (preview *StatusLinkPreview) validateForProto() error {
|
||||||
|
if preview.URL == "" {
|
||||||
|
return fmt.Errorf("url can't be empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
// At least and only one of Contact/Community/Channel should be present in the preview
|
||||||
|
if preview.Contact != nil && preview.Community != nil {
|
||||||
|
return fmt.Errorf("both contact and community are set at the same time")
|
||||||
|
}
|
||||||
|
if preview.Community != nil && preview.Channel != nil {
|
||||||
|
return fmt.Errorf("both community and channel are set at the same time")
|
||||||
|
}
|
||||||
|
if preview.Channel != nil && preview.Contact != nil {
|
||||||
|
return fmt.Errorf("both contact and channel are set at the same time")
|
||||||
|
}
|
||||||
|
if preview.Contact == nil && preview.Community == nil && preview.Channel == nil {
|
||||||
|
return fmt.Errorf("none of contact/community/channel are set")
|
||||||
|
}
|
||||||
|
|
||||||
|
if preview.Contact != nil {
|
||||||
|
if preview.Contact.PublicKey == "" {
|
||||||
|
return fmt.Errorf("contact publicKey is empty")
|
||||||
|
}
|
||||||
|
if err := preview.Contact.Icon.validateForProto(); err != nil {
|
||||||
|
return fmt.Errorf("contact icon invalid: %w", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if preview.Community != nil {
|
||||||
|
return preview.Community.validateForProto()
|
||||||
|
}
|
||||||
|
|
||||||
|
if preview.Channel != nil {
|
||||||
|
if preview.Channel.ChannelUUID == "" {
|
||||||
|
return fmt.Errorf("channelUuid is empty")
|
||||||
|
}
|
||||||
|
if preview.Channel.Community == nil {
|
||||||
|
return fmt.Errorf("channel community is nil")
|
||||||
|
}
|
||||||
|
if err := preview.Channel.Community.validateForProto(); err != nil {
|
||||||
|
return fmt.Errorf("channel community is not valid: %w", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (preview *StatusCommunityLinkPreview) validateForProto() error {
|
||||||
|
if preview == nil {
|
||||||
|
return fmt.Errorf("community preview is empty")
|
||||||
|
}
|
||||||
|
if preview.CommunityID == "" {
|
||||||
|
return fmt.Errorf("communityId is empty")
|
||||||
|
}
|
||||||
|
if err := preview.Icon.validateForProto(); err != nil {
|
||||||
|
return fmt.Errorf("community icon is invalid: %w", err)
|
||||||
|
}
|
||||||
|
if err := preview.Banner.validateForProto(); err != nil {
|
||||||
|
return fmt.Errorf("community banner is invalid: %w", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (preview *StatusCommunityLinkPreview) convertToProto() (*protobuf.UnfurledStatusCommunityLink, error) {
|
||||||
|
if preview == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
icon, err := preview.Icon.convertToProto()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
banner, err := preview.Banner.convertToProto()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
community := &protobuf.UnfurledStatusCommunityLink{
|
||||||
|
CommunityId: []byte(preview.CommunityID),
|
||||||
|
DisplayName: preview.DisplayName,
|
||||||
|
Description: preview.Description,
|
||||||
|
MembersCount: preview.MembersCount,
|
||||||
|
Color: preview.Color,
|
||||||
|
Icon: icon,
|
||||||
|
Banner: banner,
|
||||||
|
}
|
||||||
|
|
||||||
|
return community, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (preview *StatusCommunityLinkPreview) loadFromProto(c *protobuf.UnfurledStatusCommunityLink,
|
||||||
|
URL string, thumbnailPrefix MediaServerImageIDPrefix,
|
||||||
|
makeMediaServerURL MakeMediaServerURLMessageWrapperType) {
|
||||||
|
|
||||||
|
preview.CommunityID = string(c.CommunityId)
|
||||||
|
preview.DisplayName = c.DisplayName
|
||||||
|
preview.Description = c.Description
|
||||||
|
preview.MembersCount = c.MembersCount
|
||||||
|
preview.Color = c.Color
|
||||||
|
preview.Icon.clear()
|
||||||
|
preview.Banner.clear()
|
||||||
|
|
||||||
|
if icon := c.GetIcon(); icon != nil {
|
||||||
|
preview.Icon.loadFromProto(icon, URL, CreateImageID(thumbnailPrefix, MediaServerIconPostfix), makeMediaServerURL)
|
||||||
|
}
|
||||||
|
if banner := c.GetBanner(); banner != nil {
|
||||||
|
preview.Banner.loadFromProto(banner, URL, CreateImageID(thumbnailPrefix, MediaServerBannerPostfix), makeMediaServerURL)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 err := preview.validateForProto(); err != nil {
|
||||||
|
return nil, fmt.Errorf("invalid link preview, url='%s': %w", preview.URL, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
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{
|
||||||
|
Type: preview.Type,
|
||||||
|
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,
|
||||||
|
Type: link.Type,
|
||||||
|
URL: link.Url,
|
||||||
|
}
|
||||||
|
mediaURL := ""
|
||||||
|
if len(link.ThumbnailPayload) > 0 {
|
||||||
|
mediaURL = makeMediaServerURL(m.ID, link.Url)
|
||||||
|
}
|
||||||
|
if link.GetThumbnailPayload() != nil {
|
||||||
|
lp.Thumbnail.Width = int(link.ThumbnailWidth)
|
||||||
|
lp.Thumbnail.Height = int(link.ThumbnailHeight)
|
||||||
|
lp.Thumbnail.URL = mediaURL
|
||||||
|
}
|
||||||
|
previews = append(previews, lp)
|
||||||
|
}
|
||||||
|
|
||||||
|
return previews
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Message) ConvertStatusLinkPreviewsToProto() (*protobuf.UnfurledStatusLinks, error) {
|
||||||
|
if len(m.StatusLinkPreviews) == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
unfurledLinks := make([]*protobuf.UnfurledStatusLink, 0, len(m.StatusLinkPreviews))
|
||||||
|
|
||||||
|
for _, preview := range m.StatusLinkPreviews {
|
||||||
|
// We expect all previews to be valid at this stage
|
||||||
|
if err := preview.validateForProto(); err != nil {
|
||||||
|
return nil, fmt.Errorf("invalid status link preview, url='%s': %w", preview.URL, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
ul := &protobuf.UnfurledStatusLink{
|
||||||
|
Url: preview.URL,
|
||||||
|
}
|
||||||
|
|
||||||
|
if preview.Contact != nil {
|
||||||
|
icon, err := preview.Contact.Icon.convertToProto()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
ul.Payload = &protobuf.UnfurledStatusLink_Contact{
|
||||||
|
Contact: &protobuf.UnfurledStatusContactLink{
|
||||||
|
PublicKey: []byte(preview.Contact.PublicKey),
|
||||||
|
DisplayName: preview.Contact.DisplayName,
|
||||||
|
Description: preview.Contact.Description,
|
||||||
|
Icon: icon,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if preview.Community != nil {
|
||||||
|
communityPreview, err := preview.Community.convertToProto()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
ul.Payload = &protobuf.UnfurledStatusLink_Community{
|
||||||
|
Community: communityPreview,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if preview.Channel != nil {
|
||||||
|
communityPreview, err := preview.Channel.Community.convertToProto()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.Payload = &protobuf.UnfurledStatusLink_Channel{
|
||||||
|
Channel: &protobuf.UnfurledStatusChannelLink{
|
||||||
|
ChannelUuid: []byte(preview.Channel.ChannelUUID),
|
||||||
|
Emoji: preview.Channel.Emoji,
|
||||||
|
DisplayName: preview.Channel.DisplayName,
|
||||||
|
Description: preview.Channel.Description,
|
||||||
|
Color: preview.Channel.Color,
|
||||||
|
Community: communityPreview,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
unfurledLinks = append(unfurledLinks, ul)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &protobuf.UnfurledStatusLinks{UnfurledStatusLinks: unfurledLinks}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Message) ConvertFromProtoToStatusLinkPreviews(makeMediaServerURL func(msgID string, previewURL string, imageID MediaServerImageID) string) []StatusLinkPreview {
|
||||||
|
if m.GetUnfurledStatusLinks() == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
links := m.UnfurledStatusLinks.GetUnfurledStatusLinks()
|
||||||
|
|
||||||
|
if links == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// This wrapper adds the messageID to the callback
|
||||||
|
makeMediaServerURLMessageWrapper := func(previewURL string, imageID MediaServerImageID) string {
|
||||||
|
return makeMediaServerURL(m.ID, previewURL, imageID)
|
||||||
|
}
|
||||||
|
|
||||||
|
previews := make([]StatusLinkPreview, 0, len(links))
|
||||||
|
|
||||||
|
for _, link := range links {
|
||||||
|
lp := StatusLinkPreview{
|
||||||
|
URL: link.Url,
|
||||||
|
}
|
||||||
|
|
||||||
|
if c := link.GetContact(); c != nil {
|
||||||
|
lp.Contact = &StatusContactLinkPreview{
|
||||||
|
PublicKey: string(c.PublicKey),
|
||||||
|
DisplayName: c.DisplayName,
|
||||||
|
Description: c.Description,
|
||||||
|
}
|
||||||
|
if icon := c.GetIcon(); icon != nil {
|
||||||
|
lp.Contact.Icon.loadFromProto(icon, link.Url, MediaServerContactIcon, makeMediaServerURLMessageWrapper)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if c := link.GetCommunity(); c != nil {
|
||||||
|
lp.Community = new(StatusCommunityLinkPreview)
|
||||||
|
lp.Community.loadFromProto(c, link.Url, MediaServerCommunityPrefix, makeMediaServerURLMessageWrapper)
|
||||||
|
}
|
||||||
|
|
||||||
|
if c := link.GetChannel(); c != nil {
|
||||||
|
lp.Channel = &StatusCommunityChannelLinkPreview{
|
||||||
|
ChannelUUID: string(c.ChannelUuid),
|
||||||
|
Emoji: c.Emoji,
|
||||||
|
DisplayName: c.DisplayName,
|
||||||
|
Description: c.Description,
|
||||||
|
Color: c.Color,
|
||||||
|
}
|
||||||
|
if c.Community != nil {
|
||||||
|
lp.Channel.Community = new(StatusCommunityLinkPreview)
|
||||||
|
lp.Channel.Community.loadFromProto(c.Community, link.Url, MediaServerChannelCommunityPrefix, makeMediaServerURLMessageWrapper)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
previews = append(previews, lp)
|
||||||
|
}
|
||||||
|
|
||||||
|
return previews
|
||||||
|
}
|
|
@ -193,12 +193,16 @@ func TestConvertLinkPreviewsToProto(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestConvertFromProtoToLinkPreviews(t *testing.T) {
|
func TestConvertFromProtoToLinkPreviews(t *testing.T) {
|
||||||
|
|
||||||
|
thumbnailPayload, err := base64.StdEncoding.DecodeString("iVBORw0KGgoAAAANSUg=")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
l := &protobuf.UnfurledLink{
|
l := &protobuf.UnfurledLink{
|
||||||
Description: "GitHub is where people build software.",
|
Description: "GitHub is where people build software.",
|
||||||
Title: "Build software better, together",
|
Title: "Build software better, together",
|
||||||
Type: protobuf.UnfurledLink_LINK,
|
Type: protobuf.UnfurledLink_LINK,
|
||||||
Url: "https://github.com",
|
Url: "https://github.com",
|
||||||
ThumbnailPayload: []byte(""),
|
ThumbnailPayload: thumbnailPayload,
|
||||||
ThumbnailWidth: 100,
|
ThumbnailWidth: 100,
|
||||||
ThumbnailHeight: 200,
|
ThumbnailHeight: 200,
|
||||||
}
|
}
|
||||||
|
@ -250,6 +254,335 @@ func TestConvertFromProtoToLinkPreviews(t *testing.T) {
|
||||||
require.Equal(t, "", p.Thumbnail.URL)
|
require.Equal(t, "", p.Thumbnail.URL)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestConvertStatusLinkPreviewsToProto(t *testing.T) {
|
||||||
|
contact := &StatusContactLinkPreview{
|
||||||
|
PublicKey: "PublicKey_1",
|
||||||
|
DisplayName: "DisplayName_2",
|
||||||
|
Description: "Description_3",
|
||||||
|
Icon: LinkPreviewThumbnail{
|
||||||
|
Width: 10,
|
||||||
|
Height: 20,
|
||||||
|
DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
community := &StatusCommunityLinkPreview{
|
||||||
|
CommunityID: "CommunityID_4",
|
||||||
|
DisplayName: "DisplayName_5",
|
||||||
|
Description: "Description_6",
|
||||||
|
MembersCount: 7,
|
||||||
|
Color: "Color_8",
|
||||||
|
Icon: LinkPreviewThumbnail{
|
||||||
|
Width: 30,
|
||||||
|
Height: 40,
|
||||||
|
DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
|
||||||
|
},
|
||||||
|
Banner: LinkPreviewThumbnail{
|
||||||
|
Width: 50,
|
||||||
|
Height: 60,
|
||||||
|
DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
channel := &StatusCommunityChannelLinkPreview{
|
||||||
|
ChannelUUID: "ChannelUUID_11",
|
||||||
|
Emoji: "Emoji_12",
|
||||||
|
DisplayName: "DisplayName_13",
|
||||||
|
Description: "Description_14",
|
||||||
|
Color: "Color_15",
|
||||||
|
Community: &StatusCommunityLinkPreview{
|
||||||
|
CommunityID: "CommunityID_16",
|
||||||
|
DisplayName: "DisplayName_17",
|
||||||
|
Description: "Description_18",
|
||||||
|
MembersCount: 19,
|
||||||
|
Color: "Color_20",
|
||||||
|
Icon: LinkPreviewThumbnail{
|
||||||
|
Width: 70,
|
||||||
|
Height: 80,
|
||||||
|
DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
|
||||||
|
},
|
||||||
|
Banner: LinkPreviewThumbnail{
|
||||||
|
Width: 90,
|
||||||
|
Height: 100,
|
||||||
|
DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
message := Message{
|
||||||
|
StatusLinkPreviews: []StatusLinkPreview{
|
||||||
|
{
|
||||||
|
URL: "https://status.app/u/",
|
||||||
|
Contact: contact,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "https://status.app/c/",
|
||||||
|
Community: community,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "https://status.app/cc/",
|
||||||
|
Channel: channel,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
expectedThumbnailPayload, err := base64.StdEncoding.DecodeString("iVBORw0KGgoAAAANSUg=")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
unfurledLinks, err := message.ConvertStatusLinkPreviewsToProto()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Len(t, unfurledLinks.UnfurledStatusLinks, 3)
|
||||||
|
|
||||||
|
// Contact link
|
||||||
|
|
||||||
|
l1 := unfurledLinks.UnfurledStatusLinks[0]
|
||||||
|
require.Equal(t, "https://status.app/u/", l1.Url)
|
||||||
|
require.NotNil(t, l1.GetContact())
|
||||||
|
require.Nil(t, l1.GetCommunity())
|
||||||
|
require.Nil(t, l1.GetChannel())
|
||||||
|
c1 := l1.GetContact()
|
||||||
|
require.Equal(t, contact.PublicKey, string(c1.PublicKey))
|
||||||
|
require.Equal(t, contact.DisplayName, c1.DisplayName)
|
||||||
|
require.Equal(t, contact.Description, c1.Description)
|
||||||
|
require.NotNil(t, c1.Icon)
|
||||||
|
require.Equal(t, uint32(contact.Icon.Width), c1.Icon.Width)
|
||||||
|
require.Equal(t, uint32(contact.Icon.Height), c1.Icon.Height)
|
||||||
|
require.Equal(t, expectedThumbnailPayload, c1.Icon.Payload)
|
||||||
|
|
||||||
|
// Community link
|
||||||
|
|
||||||
|
l2 := unfurledLinks.UnfurledStatusLinks[1]
|
||||||
|
require.Equal(t, "https://status.app/c/", l2.Url)
|
||||||
|
require.NotNil(t, l2.GetCommunity())
|
||||||
|
require.Nil(t, l2.GetContact())
|
||||||
|
require.Nil(t, l2.GetChannel())
|
||||||
|
c2 := l2.GetCommunity()
|
||||||
|
require.Equal(t, community.CommunityID, string(c2.CommunityId))
|
||||||
|
require.Equal(t, community.DisplayName, c2.DisplayName)
|
||||||
|
require.Equal(t, community.Description, c2.Description)
|
||||||
|
require.Equal(t, community.MembersCount, c2.MembersCount)
|
||||||
|
require.Equal(t, community.Color, c2.Color)
|
||||||
|
require.NotNil(t, c2.Icon)
|
||||||
|
require.Equal(t, uint32(community.Icon.Width), c2.Icon.Width)
|
||||||
|
require.Equal(t, uint32(community.Icon.Height), c2.Icon.Height)
|
||||||
|
require.Equal(t, expectedThumbnailPayload, c2.Icon.Payload)
|
||||||
|
require.NotNil(t, c2.Banner)
|
||||||
|
require.Equal(t, uint32(community.Banner.Width), c2.Banner.Width)
|
||||||
|
require.Equal(t, uint32(community.Banner.Height), c2.Banner.Height)
|
||||||
|
require.Equal(t, expectedThumbnailPayload, c2.Banner.Payload)
|
||||||
|
|
||||||
|
// Channel link
|
||||||
|
|
||||||
|
l3 := unfurledLinks.UnfurledStatusLinks[2]
|
||||||
|
require.Equal(t, "https://status.app/cc/", l3.Url)
|
||||||
|
require.NotNil(t, l3.GetChannel())
|
||||||
|
require.Nil(t, l3.GetContact())
|
||||||
|
require.Nil(t, l3.GetCommunity())
|
||||||
|
|
||||||
|
c3 := l3.GetChannel()
|
||||||
|
require.Equal(t, channel.ChannelUUID, string(c3.ChannelUuid))
|
||||||
|
require.Equal(t, channel.Emoji, c3.Emoji)
|
||||||
|
require.Equal(t, channel.DisplayName, c3.DisplayName)
|
||||||
|
require.Equal(t, channel.Description, c3.Description)
|
||||||
|
require.Equal(t, channel.Color, c3.Color)
|
||||||
|
|
||||||
|
require.NotNil(t, c3.Community)
|
||||||
|
require.Equal(t, channel.Community.CommunityID, string(c3.Community.CommunityId))
|
||||||
|
require.Equal(t, channel.Community.DisplayName, c3.Community.DisplayName)
|
||||||
|
require.Equal(t, channel.Community.Color, c3.Community.Color)
|
||||||
|
require.Equal(t, channel.Community.Description, c3.Community.Description)
|
||||||
|
require.Equal(t, channel.Community.MembersCount, c3.Community.MembersCount)
|
||||||
|
require.NotNil(t, c3.Community.Icon)
|
||||||
|
require.Equal(t, uint32(channel.Community.Icon.Width), c3.Community.Icon.Width)
|
||||||
|
require.Equal(t, uint32(channel.Community.Icon.Height), c3.Community.Icon.Height)
|
||||||
|
require.Equal(t, expectedThumbnailPayload, c3.Community.Icon.Payload)
|
||||||
|
require.NotNil(t, c3.Community.Banner)
|
||||||
|
require.Equal(t, uint32(channel.Community.Banner.Width), c3.Community.Banner.Width)
|
||||||
|
require.Equal(t, uint32(channel.Community.Banner.Height), c3.Community.Banner.Height)
|
||||||
|
require.Equal(t, expectedThumbnailPayload, c3.Community.Banner.Payload)
|
||||||
|
|
||||||
|
// Test any invalid link preview causes an early return.
|
||||||
|
invalidContactPreview := contact
|
||||||
|
invalidContactPreview.PublicKey = ""
|
||||||
|
invalidPreview := message.StatusLinkPreviews[0]
|
||||||
|
invalidPreview.Contact = invalidContactPreview
|
||||||
|
message.StatusLinkPreviews = []StatusLinkPreview{invalidPreview}
|
||||||
|
_, err = message.ConvertStatusLinkPreviewsToProto()
|
||||||
|
require.ErrorContains(t, err, "invalid status link preview, url='https://status.app/u/'")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestConvertFromProtoToStatusLinkPreviews(t *testing.T) {
|
||||||
|
|
||||||
|
thumbnailPayload, err := base64.StdEncoding.DecodeString("iVBORw0KGgoAAAANSUg=")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
contact := &protobuf.UnfurledStatusContactLink{
|
||||||
|
PublicKey: []byte("PublicKey_1"),
|
||||||
|
DisplayName: "DisplayName_2",
|
||||||
|
Description: "Description_3",
|
||||||
|
Icon: &protobuf.UnfurledLinkThumbnail{
|
||||||
|
Width: 10,
|
||||||
|
Height: 20,
|
||||||
|
Payload: thumbnailPayload,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
community := &protobuf.UnfurledStatusCommunityLink{
|
||||||
|
CommunityId: []byte("CommunityId_4"),
|
||||||
|
DisplayName: "DisplayName_5",
|
||||||
|
Description: "Description_6",
|
||||||
|
MembersCount: 7,
|
||||||
|
Color: "Color_8",
|
||||||
|
Icon: &protobuf.UnfurledLinkThumbnail{
|
||||||
|
Width: 30,
|
||||||
|
Height: 40,
|
||||||
|
Payload: thumbnailPayload,
|
||||||
|
},
|
||||||
|
Banner: &protobuf.UnfurledLinkThumbnail{
|
||||||
|
Width: 50,
|
||||||
|
Height: 60,
|
||||||
|
Payload: thumbnailPayload,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
channel := &protobuf.UnfurledStatusChannelLink{
|
||||||
|
ChannelUuid: []byte("ChannelUuid_11"),
|
||||||
|
Emoji: "Emoji_12",
|
||||||
|
DisplayName: "DisplayName_13",
|
||||||
|
Description: "Description_14",
|
||||||
|
Color: "Color_15",
|
||||||
|
Community: &protobuf.UnfurledStatusCommunityLink{
|
||||||
|
CommunityId: []byte("CommunityId_16"),
|
||||||
|
DisplayName: "DisplayName_17",
|
||||||
|
Description: "Description_18",
|
||||||
|
MembersCount: 19,
|
||||||
|
Color: "Color_20",
|
||||||
|
Icon: &protobuf.UnfurledLinkThumbnail{
|
||||||
|
Width: 70,
|
||||||
|
Height: 80,
|
||||||
|
Payload: thumbnailPayload,
|
||||||
|
},
|
||||||
|
Banner: &protobuf.UnfurledLinkThumbnail{
|
||||||
|
Width: 90,
|
||||||
|
Height: 100,
|
||||||
|
Payload: thumbnailPayload,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
msg := Message{
|
||||||
|
ID: "42",
|
||||||
|
ChatMessage: &protobuf.ChatMessage{
|
||||||
|
UnfurledStatusLinks: &protobuf.UnfurledStatusLinks{
|
||||||
|
UnfurledStatusLinks: []*protobuf.UnfurledStatusLink{
|
||||||
|
{
|
||||||
|
Url: "https://status.app/u/",
|
||||||
|
Payload: &protobuf.UnfurledStatusLink_Contact{
|
||||||
|
Contact: contact,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Url: "https://status.app/c/",
|
||||||
|
Payload: &protobuf.UnfurledStatusLink_Community{
|
||||||
|
Community: community,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Url: "https://status.app/cc/",
|
||||||
|
Payload: &protobuf.UnfurledStatusLink_Channel{
|
||||||
|
Channel: channel,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
urlMaker := func(msgID string, linkURL string, imageID MediaServerImageID) string {
|
||||||
|
return "https://localhost:6666/" + msgID + "-" + linkURL + "-" + string(imageID)
|
||||||
|
}
|
||||||
|
|
||||||
|
previews := msg.ConvertFromProtoToStatusLinkPreviews(urlMaker)
|
||||||
|
require.Len(t, previews, 3)
|
||||||
|
|
||||||
|
// Contact preview
|
||||||
|
|
||||||
|
p1 := previews[0]
|
||||||
|
require.Equal(t, "https://status.app/u/", p1.URL)
|
||||||
|
require.NotNil(t, p1.Contact)
|
||||||
|
require.Nil(t, p1.Community)
|
||||||
|
require.Nil(t, p1.Channel)
|
||||||
|
|
||||||
|
c1 := p1.Contact
|
||||||
|
require.NotNil(t, c1)
|
||||||
|
require.Equal(t, contact.PublicKey, []byte(c1.PublicKey))
|
||||||
|
require.Equal(t, contact.DisplayName, c1.DisplayName)
|
||||||
|
require.Equal(t, contact.Description, c1.Description)
|
||||||
|
require.NotNil(t, c1.Icon)
|
||||||
|
require.Equal(t, int(contact.Icon.Width), c1.Icon.Width)
|
||||||
|
require.Equal(t, int(contact.Icon.Height), c1.Icon.Height)
|
||||||
|
require.Equal(t, "", c1.Icon.DataURI)
|
||||||
|
require.Equal(t, "https://localhost:6666/42-https://status.app/u/-contact-icon", c1.Icon.URL)
|
||||||
|
|
||||||
|
// Community preview
|
||||||
|
|
||||||
|
p2 := previews[1]
|
||||||
|
require.Equal(t, "https://status.app/c/", p2.URL)
|
||||||
|
require.NotNil(t, p2.Community)
|
||||||
|
require.Nil(t, p2.Contact)
|
||||||
|
require.Nil(t, p2.Channel)
|
||||||
|
|
||||||
|
c2 := p2.Community
|
||||||
|
require.Equal(t, community.CommunityId, []byte(c2.CommunityID))
|
||||||
|
require.Equal(t, community.DisplayName, c2.DisplayName)
|
||||||
|
require.Equal(t, community.Description, c2.Description)
|
||||||
|
require.Equal(t, community.MembersCount, c2.MembersCount)
|
||||||
|
require.Equal(t, community.Color, c2.Color)
|
||||||
|
require.NotNil(t, c2.Icon)
|
||||||
|
require.Equal(t, int(community.Icon.Width), c2.Icon.Width)
|
||||||
|
require.Equal(t, int(community.Icon.Height), c2.Icon.Height)
|
||||||
|
require.Equal(t, "", c2.Icon.DataURI)
|
||||||
|
require.Equal(t, "https://localhost:6666/42-https://status.app/c/-community-icon", c2.Icon.URL)
|
||||||
|
require.NotNil(t, c2.Banner)
|
||||||
|
require.Equal(t, int(community.Banner.Width), c2.Banner.Width)
|
||||||
|
require.Equal(t, int(community.Banner.Height), c2.Banner.Height)
|
||||||
|
require.Equal(t, "", c2.Banner.DataURI)
|
||||||
|
require.Equal(t, "https://localhost:6666/42-https://status.app/c/-community-banner", c2.Banner.URL)
|
||||||
|
|
||||||
|
// Channel preview
|
||||||
|
|
||||||
|
p3 := previews[2]
|
||||||
|
require.Equal(t, "https://status.app/cc/", p3.URL)
|
||||||
|
require.NotNil(t, p3.Channel)
|
||||||
|
require.Nil(t, p3.Contact)
|
||||||
|
require.Nil(t, p3.Community)
|
||||||
|
|
||||||
|
c3 := previews[2].Channel
|
||||||
|
require.Equal(t, channel.ChannelUuid, []byte(c3.ChannelUUID))
|
||||||
|
require.Equal(t, channel.Emoji, c3.Emoji)
|
||||||
|
require.Equal(t, channel.DisplayName, c3.DisplayName)
|
||||||
|
require.Equal(t, channel.Description, c3.Description)
|
||||||
|
require.Equal(t, channel.Color, c3.Color)
|
||||||
|
|
||||||
|
require.NotNil(t, p3.Channel.Community)
|
||||||
|
require.Equal(t, channel.Community.CommunityId, []byte(c3.Community.CommunityID))
|
||||||
|
require.Equal(t, channel.Community.DisplayName, c3.Community.DisplayName)
|
||||||
|
require.Equal(t, channel.Community.Color, c3.Community.Color)
|
||||||
|
require.Equal(t, channel.Community.Description, c3.Community.Description)
|
||||||
|
require.Equal(t, channel.Community.MembersCount, c3.Community.MembersCount)
|
||||||
|
require.NotNil(t, c3.Community.Icon)
|
||||||
|
require.Equal(t, int(channel.Community.Icon.Width), c3.Community.Icon.Width)
|
||||||
|
require.Equal(t, int(channel.Community.Icon.Height), c3.Community.Icon.Height)
|
||||||
|
require.Equal(t, "", c3.Community.Icon.DataURI)
|
||||||
|
require.Equal(t, "https://localhost:6666/42-https://status.app/cc/-community-channel-icon", c3.Community.Icon.URL)
|
||||||
|
require.NotNil(t, c3.Community.Banner)
|
||||||
|
require.Equal(t, int(channel.Community.Banner.Width), c3.Community.Banner.Width)
|
||||||
|
require.Equal(t, int(channel.Community.Banner.Height), c3.Community.Banner.Height)
|
||||||
|
require.Equal(t, "", c3.Community.Banner.DataURI)
|
||||||
|
require.Equal(t, "https://localhost:6666/42-https://status.app/cc/-community-channel-banner", c3.Community.Banner.URL)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func assertMarshalAndUnmarshalJSON[T any](t *testing.T, obj *T, msgAndArgs ...any) {
|
func assertMarshalAndUnmarshalJSON[T any](t *testing.T, obj *T, msgAndArgs ...any) {
|
||||||
rawJSON, err := json.Marshal(obj)
|
rawJSON, err := json.Marshal(obj)
|
||||||
require.NoError(t, err, msgAndArgs...)
|
require.NoError(t, err, msgAndArgs...)
|
||||||
|
|
|
@ -103,7 +103,7 @@ func _1536754952_initial_schemaDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1536754952_initial_schema.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1536754952_initial_schema.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ func _1536754952_initial_schemaUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1536754952_initial_schema.up.sql", size: 962, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1536754952_initial_schema.up.sql", size: 962, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -143,7 +143,7 @@ func _1539249977_update_ratchet_infoDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1539249977_update_ratchet_info.down.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1539249977_update_ratchet_info.down.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -163,7 +163,7 @@ func _1539249977_update_ratchet_infoUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1539249977_update_ratchet_info.up.sql", size: 368, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1539249977_update_ratchet_info.up.sql", size: 368, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -183,7 +183,7 @@ func _1540715431_add_versionDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1540715431_add_version.down.sql", size: 127, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1540715431_add_version.down.sql", size: 127, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,7 @@ func _1540715431_add_versionUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1540715431_add_version.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1540715431_add_version.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -223,7 +223,7 @@ func _1541164797_add_installationsDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1541164797_add_installations.down.sql", size: 26, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1541164797_add_installations.down.sql", size: 26, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -243,7 +243,7 @@ func _1541164797_add_installationsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1541164797_add_installations.up.sql", size: 216, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1541164797_add_installations.up.sql", size: 216, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -263,7 +263,7 @@ func _1558084410_add_secretDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1558084410_add_secret.down.sql", size: 56, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1558084410_add_secret.down.sql", size: 56, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -283,7 +283,7 @@ func _1558084410_add_secretUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1558084410_add_secret.up.sql", size: 301, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1558084410_add_secret.up.sql", size: 301, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -303,7 +303,7 @@ func _1558588866_add_versionDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1558588866_add_version.down.sql", size: 47, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1558588866_add_version.down.sql", size: 47, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -323,7 +323,7 @@ func _1558588866_add_versionUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1558588866_add_version.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1558588866_add_version.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -343,7 +343,7 @@ func _1559627659_add_contact_codeDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1559627659_add_contact_code.down.sql", size: 32, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1559627659_add_contact_code.down.sql", size: 32, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -363,7 +363,7 @@ func _1559627659_add_contact_codeUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1559627659_add_contact_code.up.sql", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1559627659_add_contact_code.up.sql", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -383,7 +383,7 @@ func _1561368210_add_installation_metadataDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1561368210_add_installation_metadata.down.sql", size: 35, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1561368210_add_installation_metadata.down.sql", size: 35, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -403,7 +403,7 @@ func _1561368210_add_installation_metadataUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1561368210_add_installation_metadata.up.sql", size: 267, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1561368210_add_installation_metadata.up.sql", size: 267, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -423,7 +423,7 @@ func _1632236298_add_communitiesDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1632236298_add_communities.down.sql", size: 151, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1632236298_add_communities.down.sql", size: 151, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -443,7 +443,7 @@ func _1632236298_add_communitiesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1632236298_add_communities.up.sql", size: 584, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1632236298_add_communities.up.sql", size: 584, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -463,7 +463,7 @@ func _1636536507_add_index_bundlesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1636536507_add_index_bundles.up.sql", size: 347, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1636536507_add_index_bundles.up.sql", size: 347, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -483,7 +483,7 @@ func docGo() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "doc.go", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "doc.go", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package unfurlers
|
package protocol
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
@ -34,11 +34,11 @@ const (
|
||||||
type Headers map[string]string
|
type Headers map[string]string
|
||||||
|
|
||||||
type Unfurler interface {
|
type Unfurler interface {
|
||||||
Unfurl() (common.LinkPreview, error)
|
Unfurl() (*common.LinkPreview, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newDefaultLinkPreview(url *neturl.URL) common.LinkPreview {
|
func newDefaultLinkPreview(url *neturl.URL) *common.LinkPreview {
|
||||||
return common.LinkPreview{
|
return &common.LinkPreview{
|
||||||
URL: url.String(),
|
URL: url.String(),
|
||||||
Hostname: url.Hostname(),
|
Hostname: url.Hostname(),
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package unfurlers
|
package protocol
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
@ -76,7 +76,7 @@ func isSupportedImage(payload []byte) bool {
|
||||||
return images.IsJpeg(payload) || images.IsPng(payload) || images.IsWebp(payload)
|
return images.IsJpeg(payload) || images.IsPng(payload) || images.IsWebp(payload)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *ImageUnfurler) Unfurl() (common.LinkPreview, error) {
|
func (u *ImageUnfurler) Unfurl() (*common.LinkPreview, error) {
|
||||||
preview := newDefaultLinkPreview(u.url)
|
preview := newDefaultLinkPreview(u.url)
|
||||||
preview.Type = protobuf.UnfurledLink_IMAGE
|
preview.Type = protobuf.UnfurledLink_IMAGE
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package unfurlers
|
package protocol
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
@ -56,7 +56,7 @@ func (u *OEmbedUnfurler) newOEmbedURL() (*neturl.URL, error) {
|
||||||
return oembedURL, nil
|
return oembedURL, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u OEmbedUnfurler) Unfurl() (common.LinkPreview, error) {
|
func (u OEmbedUnfurler) Unfurl() (*common.LinkPreview, error) {
|
||||||
preview := newDefaultLinkPreview(u.url)
|
preview := newDefaultLinkPreview(u.url)
|
||||||
preview.Type = protobuf.UnfurledLink_LINK
|
preview.Type = protobuf.UnfurledLink_LINK
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package unfurlers
|
package protocol
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
@ -38,7 +38,7 @@ func NewOpenGraphUnfurler(URL *neturl.URL, logger *zap.Logger, httpClient *http.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *OpenGraphUnfurler) Unfurl() (common.LinkPreview, error) {
|
func (u *OpenGraphUnfurler) Unfurl() (*common.LinkPreview, error) {
|
||||||
preview := newDefaultLinkPreview(u.url)
|
preview := newDefaultLinkPreview(u.url)
|
||||||
preview.Type = protobuf.UnfurledLink_LINK
|
preview.Type = protobuf.UnfurledLink_LINK
|
||||||
|
|
|
@ -0,0 +1,186 @@
|
||||||
|
package protocol
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"go.uber.org/zap"
|
||||||
|
|
||||||
|
"github.com/status-im/status-go/api/multiformat"
|
||||||
|
"github.com/status-im/status-go/images"
|
||||||
|
"github.com/status-im/status-go/protocol/common"
|
||||||
|
"github.com/status-im/status-go/protocol/communities"
|
||||||
|
)
|
||||||
|
|
||||||
|
type StatusUnfurler struct {
|
||||||
|
m *Messenger
|
||||||
|
logger *zap.Logger
|
||||||
|
url string
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewStatusUnfurler(URL string, messenger *Messenger, logger *zap.Logger) *StatusUnfurler {
|
||||||
|
return &StatusUnfurler{
|
||||||
|
m: messenger,
|
||||||
|
logger: logger,
|
||||||
|
url: URL,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateThumbnail(image *images.IdentityImage, thumbnail *common.LinkPreviewThumbnail) error {
|
||||||
|
if image.IsEmpty() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
thumbnail.Width, thumbnail.Height, err = images.GetImageDimensions(image.Payload)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to get image dimensions: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
thumbnail.DataURI, err = image.GetDataURI()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to get data uri: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *StatusUnfurler) buildContactData(publicKey string) (*common.StatusContactLinkPreview, error) {
|
||||||
|
contactID, err := multiformat.DeserializeCompressedKey(publicKey)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
contact := u.m.GetContactByID(contactID)
|
||||||
|
|
||||||
|
// If no contact found locally, fetch it from waku
|
||||||
|
if contact == nil {
|
||||||
|
if contact, err = u.m.RequestContactInfoFromMailserver(contactID, true); err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to request contact info from mailserver for public key '%s': %w", publicKey, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
c := new(common.StatusContactLinkPreview)
|
||||||
|
c.PublicKey = publicKey
|
||||||
|
c.DisplayName = contact.DisplayName
|
||||||
|
c.Description = contact.Bio
|
||||||
|
|
||||||
|
if image, ok := contact.Images[images.SmallDimName]; ok {
|
||||||
|
if err = updateThumbnail(&image, &c.Icon); err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to set thumbnail: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return c, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *StatusUnfurler) fillCommunityImages(community *communities.Community, icon *common.LinkPreviewThumbnail, banner *common.LinkPreviewThumbnail) error {
|
||||||
|
if image, ok := community.Images()[images.SmallDimName]; ok {
|
||||||
|
if err := updateThumbnail(&images.IdentityImage{Payload: image.Payload}, icon); err != nil {
|
||||||
|
u.logger.Warn("unfurling status link: failed to set community thumbnail", zap.Error(err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if image, ok := community.Images()[images.BannerIdentityName]; ok {
|
||||||
|
if err := updateThumbnail(&images.IdentityImage{Payload: image.Payload}, banner); err != nil {
|
||||||
|
u.logger.Warn("unfurling status link: failed to set community banner", zap.Error(err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *StatusUnfurler) buildCommunityData(communityID string) (*communities.Community, *common.StatusCommunityLinkPreview, error) {
|
||||||
|
// This automatically checks the database
|
||||||
|
community, err := u.m.RequestCommunityInfoFromMailserver(communityID, nil, true)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, fmt.Errorf("failed to get community info for communityID '%s': %w", communityID, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if community == nil {
|
||||||
|
return community, nil, fmt.Errorf("community info fetched, but it is empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
c := &common.StatusCommunityLinkPreview{
|
||||||
|
CommunityID: community.IDString(),
|
||||||
|
DisplayName: community.Name(),
|
||||||
|
Description: community.DescriptionText(),
|
||||||
|
MembersCount: uint32(community.MembersCount()),
|
||||||
|
Color: community.Color(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err = u.fillCommunityImages(community, &c.Icon, &c.Banner)
|
||||||
|
if err != nil {
|
||||||
|
return community, c, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return community, c, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *StatusUnfurler) buildChannelData(channelUUID string, communityID string) (*common.StatusCommunityChannelLinkPreview, error) {
|
||||||
|
community, communityData, err := u.buildCommunityData(communityID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to build channel community data: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
channel, ok := community.Chats()[channelUUID]
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("channel with channelID '%s' not found in community '%s'", channelUUID, communityID)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &common.StatusCommunityChannelLinkPreview{
|
||||||
|
ChannelUUID: channelUUID,
|
||||||
|
Emoji: channel.Identity.Emoji,
|
||||||
|
DisplayName: channel.Identity.DisplayName,
|
||||||
|
Description: channel.Identity.Description,
|
||||||
|
Color: channel.Identity.Color,
|
||||||
|
Community: communityData,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *StatusUnfurler) Unfurl() (*common.StatusLinkPreview, error) {
|
||||||
|
preview := new(common.StatusLinkPreview)
|
||||||
|
preview.URL = u.url
|
||||||
|
|
||||||
|
resp, err := u.m.ParseSharedURL(u.url)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to parse shared url: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// If a URL has been successfully parsed,
|
||||||
|
// any further errors should not be returned, only logged.
|
||||||
|
|
||||||
|
if resp.Contact != nil {
|
||||||
|
preview.Contact, err = u.buildContactData(resp.Contact.PublicKey)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error when building contact data: %w", err)
|
||||||
|
}
|
||||||
|
return preview, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NOTE: Currently channel data comes together with community data,
|
||||||
|
// both `Community` and `Channel` fields will be present.
|
||||||
|
// So we check for Channel first, then Community.
|
||||||
|
|
||||||
|
if resp.Channel != nil {
|
||||||
|
if resp.Community == nil {
|
||||||
|
return preview, fmt.Errorf("channel community can't be empty")
|
||||||
|
}
|
||||||
|
preview.Channel, err = u.buildChannelData(resp.Channel.ChannelUUID, resp.Community.CommunityID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error when building channel data: %w", err)
|
||||||
|
}
|
||||||
|
return preview, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp.Community != nil {
|
||||||
|
_, preview.Community, err = u.buildCommunityData(resp.Community.CommunityID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error when building community data: %w", err)
|
||||||
|
}
|
||||||
|
return preview, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, fmt.Errorf("shared url does not contain contact, community or channel data")
|
||||||
|
}
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/golang/protobuf/proto"
|
||||||
"github.com/lib/pq"
|
"github.com/lib/pq"
|
||||||
|
|
||||||
"github.com/status-im/status-go/protocol/common"
|
"github.com/status-im/status-go/protocol/common"
|
||||||
|
@ -83,6 +84,7 @@ func (db sqlitePersistence) tableUserMessagesAllFields() string {
|
||||||
mentions,
|
mentions,
|
||||||
links,
|
links,
|
||||||
unfurled_links,
|
unfurled_links,
|
||||||
|
unfurled_status_links,
|
||||||
command_id,
|
command_id,
|
||||||
command_value,
|
command_value,
|
||||||
command_from,
|
command_from,
|
||||||
|
@ -136,6 +138,7 @@ func (db sqlitePersistence) tableUserMessagesAllFieldsJoin() string {
|
||||||
m1.mentions,
|
m1.mentions,
|
||||||
m1.links,
|
m1.links,
|
||||||
m1.unfurled_links,
|
m1.unfurled_links,
|
||||||
|
m1.unfurled_status_links,
|
||||||
m1.command_id,
|
m1.command_id,
|
||||||
m1.command_value,
|
m1.command_value,
|
||||||
m1.command_from,
|
m1.command_from,
|
||||||
|
@ -215,6 +218,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
|
||||||
var serializedMentions []byte
|
var serializedMentions []byte
|
||||||
var serializedLinks []byte
|
var serializedLinks []byte
|
||||||
var serializedUnfurledLinks []byte
|
var serializedUnfurledLinks []byte
|
||||||
|
var serializedUnfurledStatusLinks []byte
|
||||||
var alias sql.NullString
|
var alias sql.NullString
|
||||||
var identicon sql.NullString
|
var identicon sql.NullString
|
||||||
var communityID sql.NullString
|
var communityID sql.NullString
|
||||||
|
@ -271,6 +275,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
|
||||||
&serializedMentions,
|
&serializedMentions,
|
||||||
&serializedLinks,
|
&serializedLinks,
|
||||||
&serializedUnfurledLinks,
|
&serializedUnfurledLinks,
|
||||||
|
&serializedUnfurledStatusLinks,
|
||||||
&command.ID,
|
&command.ID,
|
||||||
&command.Value,
|
&command.Value,
|
||||||
&command.From,
|
&command.From,
|
||||||
|
@ -414,6 +419,16 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if serializedUnfurledStatusLinks != nil {
|
||||||
|
// use proto.Marshal, because json.Marshal doesn't support `oneof` fields
|
||||||
|
var links protobuf.UnfurledStatusLinks
|
||||||
|
err = proto.Unmarshal(serializedUnfurledStatusLinks, &links)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
message.UnfurledStatusLinks = &links
|
||||||
|
}
|
||||||
|
|
||||||
if attachment.Id != "" {
|
if attachment.Id != "" {
|
||||||
discordMessage.Attachments = append(discordMessage.Attachments, attachment)
|
discordMessage.Attachments = append(discordMessage.Attachments, attachment)
|
||||||
}
|
}
|
||||||
|
@ -502,6 +517,15 @@ func (db sqlitePersistence) tableUserMessagesAllValues(message *common.Message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var serializedUnfurledStatusLinks []byte
|
||||||
|
if links := message.GetUnfurledStatusLinks(); links != nil {
|
||||||
|
// use proto.Marshal, because json.Marshal doesn't support `oneof` fields
|
||||||
|
serializedUnfurledStatusLinks, err = proto.Marshal(links)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return []interface{}{
|
return []interface{}{
|
||||||
message.ID,
|
message.ID,
|
||||||
message.WhisperTimestamp,
|
message.WhisperTimestamp,
|
||||||
|
@ -534,6 +558,7 @@ func (db sqlitePersistence) tableUserMessagesAllValues(message *common.Message)
|
||||||
serializedMentions,
|
serializedMentions,
|
||||||
serializedLinks,
|
serializedLinks,
|
||||||
serializedUnfurledLinks,
|
serializedUnfurledLinks,
|
||||||
|
serializedUnfurledStatusLinks,
|
||||||
command.ID,
|
command.ID,
|
||||||
command.Value,
|
command.Value,
|
||||||
command.From,
|
command.From,
|
||||||
|
@ -2465,12 +2490,12 @@ func (db sqlitePersistence) SaveEdit(editMessage *EditMessage) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := db.db.Exec(`INSERT INTO user_messages_edits (clock, chat_id, message_id, text, source, id, unfurled_links) VALUES(?,?,?,?,?,?,?)`, editMessage.Clock, editMessage.ChatId, editMessage.MessageId, editMessage.Text, editMessage.From, editMessage.ID, pq.Array(editMessage.UnfurledLinks))
|
_, err := db.db.Exec(`INSERT INTO user_messages_edits (clock, chat_id, message_id, text, source, id, unfurled_links, unfurled_status_links) VALUES(?,?,?,?,?,?,?,?)`, editMessage.Clock, editMessage.ChatId, editMessage.MessageId, editMessage.Text, editMessage.From, editMessage.ID, pq.Array(editMessage.UnfurledLinks), editMessage.UnfurledStatusLinks)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db sqlitePersistence) GetEdits(messageID string, from string) ([]*EditMessage, error) {
|
func (db sqlitePersistence) GetEdits(messageID string, from string) ([]*EditMessage, error) {
|
||||||
rows, err := db.db.Query(`SELECT clock, chat_id, message_id, source, text, id, unfurled_links FROM user_messages_edits WHERE message_id = ? AND source = ? ORDER BY CLOCK DESC`, messageID, from)
|
rows, err := db.db.Query(`SELECT clock, chat_id, message_id, source, text, id, unfurled_links, unfurled_status_links FROM user_messages_edits WHERE message_id = ? AND source = ? ORDER BY CLOCK DESC`, messageID, from)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -2479,7 +2504,7 @@ func (db sqlitePersistence) GetEdits(messageID string, from string) ([]*EditMess
|
||||||
var messages []*EditMessage
|
var messages []*EditMessage
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
e := NewEditMessage()
|
e := NewEditMessage()
|
||||||
err := rows.Scan(&e.Clock, &e.ChatId, &e.MessageId, &e.From, &e.Text, &e.ID, pq.Array(&e.UnfurledLinks))
|
err := rows.Scan(&e.Clock, &e.ChatId, &e.MessageId, &e.From, &e.Text, &e.ID, pq.Array(&e.UnfurledLinks), &e.UnfurledStatusLinks)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -2299,6 +2299,13 @@ func (m *Messenger) sendChatMessage(ctx context.Context, message *common.Message
|
||||||
message.UnfurledLinks = unfurledLinks
|
message.UnfurledLinks = unfurledLinks
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unfurledStatusLinks, err := message.ConvertStatusLinkPreviewsToProto()
|
||||||
|
if err != nil {
|
||||||
|
m.logger.Error("failed to convert status link previews", zap.Error(err))
|
||||||
|
} else {
|
||||||
|
message.UnfurledStatusLinks = unfurledStatusLinks
|
||||||
|
}
|
||||||
|
|
||||||
var response MessengerResponse
|
var response MessengerResponse
|
||||||
|
|
||||||
// A valid added chat is required.
|
// A valid added chat is required.
|
||||||
|
@ -4057,6 +4064,7 @@ func (m *Messenger) prepareMessage(msg *common.Message, s *server.MediaServer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
msg.LinkPreviews = msg.ConvertFromProtoToLinkPreviews(s.MakeLinkPreviewThumbnailURL)
|
msg.LinkPreviews = msg.ConvertFromProtoToLinkPreviews(s.MakeLinkPreviewThumbnailURL)
|
||||||
|
msg.StatusLinkPreviews = msg.ConvertFromProtoToStatusLinkPreviews(s.MakeStatusLinkPreviewThumbnailURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) AllMessageByChatIDWhichMatchTerm(chatID string, searchTerm string, caseSensitive bool) ([]*common.Message, error) {
|
func (m *Messenger) AllMessageByChatIDWhichMatchTerm(chatID string, searchTerm string, caseSensitive bool) ([]*common.Message, error) {
|
||||||
|
|
|
@ -498,13 +498,30 @@ func (s *MessengerEditMessageSuite) TestEditMessageWithLinkPreviews() {
|
||||||
DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
|
DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
|
StatusLinkPreviews: []common.StatusLinkPreview{
|
||||||
|
{
|
||||||
|
URL: "https://status.app/u/TestUrl",
|
||||||
|
Contact: &common.StatusContactLinkPreview{
|
||||||
|
PublicKey: "TestPublicKey",
|
||||||
|
DisplayName: "TestDisplayName",
|
||||||
|
Description: "Test description",
|
||||||
|
Icon: common.LinkPreviewThumbnail{
|
||||||
|
Width: 100,
|
||||||
|
Height: 200,
|
||||||
|
DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
sendResponse, err = theirMessenger.EditMessage(context.Background(), editedMessage)
|
sendResponse, err = theirMessenger.EditMessage(context.Background(), editedMessage)
|
||||||
|
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
s.Require().Len(sendResponse.Messages(), 1)
|
s.Require().Len(sendResponse.Messages(), 1)
|
||||||
s.Require().NotEmpty(sendResponse.Messages()[0].LinkPreviews)
|
s.Require().Len(sendResponse.Messages()[0].LinkPreviews, 1)
|
||||||
|
s.Require().NotNil(sendResponse.Messages()[0].UnfurledStatusLinks)
|
||||||
|
s.Require().Len(sendResponse.Messages()[0].UnfurledStatusLinks.UnfurledStatusLinks, 1)
|
||||||
response, err = WaitOnMessengerResponse(
|
response, err = WaitOnMessengerResponse(
|
||||||
s.m,
|
s.m,
|
||||||
func(r *MessengerResponse) bool { return len(r.messages) == 1 },
|
func(r *MessengerResponse) bool { return len(r.messages) == 1 },
|
||||||
|
@ -514,7 +531,11 @@ func (s *MessengerEditMessageSuite) TestEditMessageWithLinkPreviews() {
|
||||||
|
|
||||||
s.Require().Len(response.Chats(), 1)
|
s.Require().Len(response.Chats(), 1)
|
||||||
s.Require().Len(response.Messages(), 1)
|
s.Require().Len(response.Messages(), 1)
|
||||||
s.Require().NotEmpty(response.Messages()[0].EditedAt)
|
|
||||||
s.Require().NotEmpty(response.Messages()[0].UnfurledLinks)
|
responseMessage := response.Messages()[0]
|
||||||
s.Require().False(response.Messages()[0].New)
|
s.Require().NotEmpty(responseMessage.EditedAt)
|
||||||
|
s.Require().Len(responseMessage.UnfurledLinks, 1)
|
||||||
|
s.Require().NotNil(responseMessage.UnfurledStatusLinks)
|
||||||
|
s.Require().Len(responseMessage.UnfurledStatusLinks.UnfurledStatusLinks, 1)
|
||||||
|
s.Require().False(responseMessage.New)
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,11 +14,11 @@ import (
|
||||||
"github.com/status-im/markdown"
|
"github.com/status-im/markdown"
|
||||||
|
|
||||||
"github.com/status-im/status-go/protocol/common"
|
"github.com/status-im/status-go/protocol/common"
|
||||||
"github.com/status-im/status-go/protocol/linkpreview/unfurlers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type LinkPreview struct {
|
type UnfurlURLsResponse struct {
|
||||||
common.LinkPreview
|
LinkPreviews []*common.LinkPreview `json:"linkPreviews,omitempty"`
|
||||||
|
StatusLinkPreviews []*common.StatusLinkPreview `json:"statusLinkPreviews,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func normalizeHostname(hostname string) string {
|
func normalizeHostname(hostname string) string {
|
||||||
|
@ -27,9 +27,10 @@ func normalizeHostname(hostname string) string {
|
||||||
return re.ReplaceAllString(hostname, "$1")
|
return re.ReplaceAllString(hostname, "$1")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) newURLUnfurler(httpClient *http.Client, url *neturl.URL) unfurlers.Unfurler {
|
func (m *Messenger) newURLUnfurler(httpClient *http.Client, url *neturl.URL) Unfurler {
|
||||||
if unfurlers.IsSupportedImageURL(url) {
|
|
||||||
return unfurlers.NewImageUnfurler(
|
if IsSupportedImageURL(url) {
|
||||||
|
return NewImageUnfurler(
|
||||||
url,
|
url,
|
||||||
m.logger,
|
m.logger,
|
||||||
httpClient)
|
httpClient)
|
||||||
|
@ -37,21 +38,21 @@ func (m *Messenger) newURLUnfurler(httpClient *http.Client, url *neturl.URL) unf
|
||||||
|
|
||||||
switch normalizeHostname(url.Hostname()) {
|
switch normalizeHostname(url.Hostname()) {
|
||||||
case "reddit.com":
|
case "reddit.com":
|
||||||
return unfurlers.NewOEmbedUnfurler(
|
return NewOEmbedUnfurler(
|
||||||
"https://www.reddit.com/oembed",
|
"https://www.reddit.com/oembed",
|
||||||
url,
|
url,
|
||||||
m.logger,
|
m.logger,
|
||||||
httpClient)
|
httpClient)
|
||||||
default:
|
default:
|
||||||
return unfurlers.NewOpenGraphUnfurler(
|
return NewOpenGraphUnfurler(
|
||||||
url,
|
url,
|
||||||
m.logger,
|
m.logger,
|
||||||
httpClient)
|
httpClient)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) unfurlURL(httpClient *http.Client, url string) (common.LinkPreview, error) {
|
func (m *Messenger) unfurlURL(httpClient *http.Client, url string) (*common.LinkPreview, error) {
|
||||||
var preview common.LinkPreview
|
preview := new(common.LinkPreview)
|
||||||
|
|
||||||
parsedURL, err := neturl.Parse(url)
|
parsedURL, err := neturl.Parse(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -127,27 +128,42 @@ func GetURLs(text string) []string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDefaultHTTPClient() *http.Client {
|
func NewDefaultHTTPClient() *http.Client {
|
||||||
return &http.Client{Timeout: unfurlers.DefaultRequestTimeout}
|
return &http.Client{Timeout: DefaultRequestTimeout}
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnfurlURLs assumes clients pass URLs verbatim that were validated and
|
// UnfurlURLs assumes clients pass URLs verbatim that were validated and
|
||||||
// processed by GetURLs.
|
// processed by GetURLs.
|
||||||
func (m *Messenger) UnfurlURLs(httpClient *http.Client, urls []string) ([]common.LinkPreview, error) {
|
func (m *Messenger) UnfurlURLs(httpClient *http.Client, urls []string) (UnfurlURLsResponse, error) {
|
||||||
if httpClient == nil {
|
if httpClient == nil {
|
||||||
httpClient = NewDefaultHTTPClient()
|
httpClient = NewDefaultHTTPClient()
|
||||||
}
|
}
|
||||||
|
|
||||||
previews := make([]common.LinkPreview, 0, len(urls))
|
r := UnfurlURLsResponse{
|
||||||
|
LinkPreviews: make([]*common.LinkPreview, 0, len(urls)),
|
||||||
|
StatusLinkPreviews: make([]*common.StatusLinkPreview, 0, len(urls)),
|
||||||
|
}
|
||||||
|
|
||||||
for _, url := range urls {
|
for _, url := range urls {
|
||||||
m.logger.Debug("unfurling", zap.String("url", url))
|
m.logger.Debug("unfurling", zap.String("url", url))
|
||||||
p, err := m.unfurlURL(httpClient, url)
|
|
||||||
if err != nil {
|
if m.IsStatusSharedURL(url) {
|
||||||
m.logger.Info("failed to unfurl", zap.String("url", url), zap.Error(err))
|
unfurler := NewStatusUnfurler(url, m, m.logger)
|
||||||
|
preview, err := unfurler.Unfurl()
|
||||||
|
if err != nil {
|
||||||
|
m.logger.Warn("failed to unfurl status link", zap.String("url", url), zap.Error(err))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
r.StatusLinkPreviews = append(r.StatusLinkPreviews, preview)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
previews = append(previews, p)
|
|
||||||
|
p, err := m.unfurlURL(httpClient, url)
|
||||||
|
if err != nil {
|
||||||
|
m.logger.Warn("failed to unfurl", zap.String("url", url), zap.Error(err))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
r.LinkPreviews = append(r.LinkPreviews, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
return previews, nil
|
return r, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,9 +13,11 @@ import (
|
||||||
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
|
"github.com/status-im/status-go/eth-node/crypto"
|
||||||
|
"github.com/status-im/status-go/images"
|
||||||
"github.com/status-im/status-go/protocol/common"
|
"github.com/status-im/status-go/protocol/common"
|
||||||
"github.com/status-im/status-go/protocol/linkpreview/unfurlers"
|
|
||||||
"github.com/status-im/status-go/protocol/protobuf"
|
"github.com/status-im/status-go/protocol/protobuf"
|
||||||
|
"github.com/status-im/status-go/protocol/requests"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMessengerLinkPreviews(t *testing.T) {
|
func TestMessengerLinkPreviews(t *testing.T) {
|
||||||
|
@ -26,21 +28,6 @@ type MessengerLinkPreviewsTestSuite struct {
|
||||||
MessengerBaseTestSuite
|
MessengerBaseTestSuite
|
||||||
}
|
}
|
||||||
|
|
||||||
//func (s *MessengerLinkPreviewsTestSuite) SetupTest() {
|
|
||||||
// s.logger = tt.MustCreateTestLogger()
|
|
||||||
//
|
|
||||||
// c := waku.DefaultConfig
|
|
||||||
// c.MinimumAcceptedPoW = 0
|
|
||||||
// shh := waku.New(&c, s.logger)
|
|
||||||
// s.shh = gethbridge.NewGethWakuWrapper(shh)
|
|
||||||
// s.Require().NoError(shh.Start())
|
|
||||||
//
|
|
||||||
// s.m = s.newMessenger()
|
|
||||||
// s.privateKey = s.m.identity
|
|
||||||
// _, err := s.m.Start()
|
|
||||||
// s.Require().NoError(err)
|
|
||||||
//}
|
|
||||||
|
|
||||||
// StubMatcher should either return an http.Response or nil in case the request
|
// StubMatcher should either return an http.Response or nil in case the request
|
||||||
// doesn't match.
|
// doesn't match.
|
||||||
type StubMatcher func(req *http.Request) *http.Response
|
type StubMatcher func(req *http.Request) *http.Response
|
||||||
|
@ -229,10 +216,11 @@ func (s *MessengerLinkPreviewsTestSuite) Test_UnfurlURLs_YouTube() {
|
||||||
transport.AddURLMatcher(thumbnailURL, s.readAsset("1.jpg"), nil)
|
transport.AddURLMatcher(thumbnailURL, s.readAsset("1.jpg"), nil)
|
||||||
stubbedClient := http.Client{Transport: &transport}
|
stubbedClient := http.Client{Transport: &transport}
|
||||||
|
|
||||||
previews, err := s.m.UnfurlURLs(&stubbedClient, []string{u})
|
response, err := s.m.UnfurlURLs(&stubbedClient, []string{u})
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
s.Require().Len(previews, 1)
|
s.Require().Len(response.StatusLinkPreviews, 0)
|
||||||
preview := previews[0]
|
s.Require().Len(response.LinkPreviews, 1)
|
||||||
|
preview := response.LinkPreviews[0]
|
||||||
|
|
||||||
s.Require().Equal(expected.Type, preview.Type)
|
s.Require().Equal(expected.Type, preview.Type)
|
||||||
s.Require().Equal(expected.URL, preview.URL)
|
s.Require().Equal(expected.URL, preview.URL)
|
||||||
|
@ -273,10 +261,11 @@ func (s *MessengerLinkPreviewsTestSuite) Test_UnfurlURLs_Reddit() {
|
||||||
)
|
)
|
||||||
stubbedClient := http.Client{Transport: &transport}
|
stubbedClient := http.Client{Transport: &transport}
|
||||||
|
|
||||||
previews, err := s.m.UnfurlURLs(&stubbedClient, []string{u})
|
response, err := s.m.UnfurlURLs(&stubbedClient, []string{u})
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
s.Require().Len(previews, 1)
|
s.Require().Len(response.StatusLinkPreviews, 0)
|
||||||
preview := previews[0]
|
s.Require().Len(response.LinkPreviews, 1)
|
||||||
|
preview := response.LinkPreviews[0]
|
||||||
|
|
||||||
s.Require().Equal(expected.Type, preview.Type)
|
s.Require().Equal(expected.Type, preview.Type)
|
||||||
s.Require().Equal(expected.URL, preview.URL)
|
s.Require().Equal(expected.URL, preview.URL)
|
||||||
|
@ -288,9 +277,10 @@ func (s *MessengerLinkPreviewsTestSuite) Test_UnfurlURLs_Reddit() {
|
||||||
|
|
||||||
func (s *MessengerLinkPreviewsTestSuite) Test_UnfurlURLs_Timeout() {
|
func (s *MessengerLinkPreviewsTestSuite) Test_UnfurlURLs_Timeout() {
|
||||||
httpClient := http.Client{Timeout: time.Nanosecond}
|
httpClient := http.Client{Timeout: time.Nanosecond}
|
||||||
previews, err := s.m.UnfurlURLs(&httpClient, []string{"https://status.im"})
|
response, err := s.m.UnfurlURLs(&httpClient, []string{"https://status.im"})
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
s.Require().Empty(previews)
|
s.Require().Len(response.StatusLinkPreviews, 0)
|
||||||
|
s.Require().Empty(response.LinkPreviews)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MessengerLinkPreviewsTestSuite) Test_UnfurlURLs_CommonFailures() {
|
func (s *MessengerLinkPreviewsTestSuite) Test_UnfurlURLs_CommonFailures() {
|
||||||
|
@ -304,19 +294,22 @@ func (s *MessengerLinkPreviewsTestSuite) Test_UnfurlURLs_CommonFailures() {
|
||||||
nil,
|
nil,
|
||||||
)
|
)
|
||||||
stubbedClient := http.Client{Transport: &transport}
|
stubbedClient := http.Client{Transport: &transport}
|
||||||
previews, err := s.m.UnfurlURLs(&stubbedClient, []string{"https://wikipedia.org"})
|
response, err := s.m.UnfurlURLs(&stubbedClient, []string{"https://wikipedia.org"})
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
s.Require().Empty(previews)
|
s.Require().Len(response.StatusLinkPreviews, 0)
|
||||||
|
s.Require().Empty(response.LinkPreviews)
|
||||||
|
|
||||||
// Test 404.
|
// Test 404.
|
||||||
previews, err = s.m.UnfurlURLs(&httpClient, []string{"https://github.com/status-im/i_do_not_exist"})
|
response, err = s.m.UnfurlURLs(&httpClient, []string{"https://github.com/status-im/i_do_not_exist"})
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
s.Require().Empty(previews)
|
s.Require().Len(response.StatusLinkPreviews, 0)
|
||||||
|
s.Require().Empty(response.LinkPreviews)
|
||||||
|
|
||||||
// Test no response when trying to get OpenGraph metadata.
|
// Test no response when trying to get OpenGraph metadata.
|
||||||
previews, err = s.m.UnfurlURLs(&httpClient, []string{"https://wikipedia.o"})
|
response, err = s.m.UnfurlURLs(&httpClient, []string{"https://wikipedia.o"})
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
s.Require().Empty(previews)
|
s.Require().Len(response.StatusLinkPreviews, 0)
|
||||||
|
s.Require().Empty(response.LinkPreviews)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MessengerLinkPreviewsTestSuite) Test_isSupportedImageURL() {
|
func (s *MessengerLinkPreviewsTestSuite) Test_isSupportedImageURL() {
|
||||||
|
@ -339,7 +332,7 @@ func (s *MessengerLinkPreviewsTestSuite) Test_isSupportedImageURL() {
|
||||||
for _, e := range examples {
|
for _, e := range examples {
|
||||||
parsedURL, err := url.Parse(e.url)
|
parsedURL, err := url.Parse(e.url)
|
||||||
s.Require().NoError(err, e)
|
s.Require().NoError(err, e)
|
||||||
s.Require().Equal(e.expected, unfurlers.IsSupportedImageURL(parsedURL), e.url)
|
s.Require().Equal(e.expected, IsSupportedImageURL(parsedURL), e.url)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -363,10 +356,11 @@ func (s *MessengerLinkPreviewsTestSuite) Test_UnfurlURLs_Image() {
|
||||||
transport.AddURLMatcher(u, s.readAsset("IMG_1205.HEIC.jpg"), nil)
|
transport.AddURLMatcher(u, s.readAsset("IMG_1205.HEIC.jpg"), nil)
|
||||||
stubbedClient := http.Client{Transport: &transport}
|
stubbedClient := http.Client{Transport: &transport}
|
||||||
|
|
||||||
previews, err := s.m.UnfurlURLs(&stubbedClient, []string{u})
|
response, err := s.m.UnfurlURLs(&stubbedClient, []string{u})
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
s.Require().Len(previews, 1)
|
s.Require().Len(response.StatusLinkPreviews, 0)
|
||||||
preview := previews[0]
|
s.Require().Len(response.LinkPreviews, 1)
|
||||||
|
preview := response.LinkPreviews[0]
|
||||||
|
|
||||||
s.Require().Equal(expected.Type, preview.Type)
|
s.Require().Equal(expected.Type, preview.Type)
|
||||||
s.Require().Equal(expected.URL, preview.URL)
|
s.Require().Equal(expected.URL, preview.URL)
|
||||||
|
@ -378,3 +372,138 @@ func (s *MessengerLinkPreviewsTestSuite) Test_UnfurlURLs_Image() {
|
||||||
s.Require().Equal(expected.Thumbnail.URL, preview.Thumbnail.URL)
|
s.Require().Equal(expected.Thumbnail.URL, preview.Thumbnail.URL)
|
||||||
s.assertContainsLongString(expected.Thumbnail.DataURI, preview.Thumbnail.DataURI, 100)
|
s.assertContainsLongString(expected.Thumbnail.DataURI, preview.Thumbnail.DataURI, 100)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *MessengerLinkPreviewsTestSuite) Test_UnfurlURLs_StatusContactAdded() {
|
||||||
|
identity, err := crypto.GenerateKey()
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
c, err := BuildContactFromPublicKey(&identity.PublicKey)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
s.Require().NotNil(c)
|
||||||
|
|
||||||
|
pubkey, err := c.PublicKey()
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
shortKey, err := s.m.SerializePublicKey(crypto.CompressPubkey(pubkey))
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
payload, err := images.GetPayloadFromURI("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixA" +
|
||||||
|
"AAAiklEQVR4nOzWwQmFQAwG4ffEXmzLIizDImzLarQBhSwSGH7mO+9hh0DI9AthCI0hNIbQGEJjCI0hNIbQxITM1YfHfl69X3m2bsu/8i5mI" +
|
||||||
|
"obQGEJjCI0hNIbQlG+tUW83UtfNFjMRQ2gMofm8tUa3U9c2i5mIITSGqEnMRAyhMYTGEBpDaO4AAAD//5POEGncqtj1AAAAAElFTkSuQmCC")
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
icon := images.IdentityImage{
|
||||||
|
Width: 50,
|
||||||
|
Height: 50,
|
||||||
|
Payload: payload,
|
||||||
|
}
|
||||||
|
|
||||||
|
c.Bio = "TestBio_1"
|
||||||
|
c.DisplayName = "TestDisplayName_2"
|
||||||
|
c.Images = map[string]images.IdentityImage{}
|
||||||
|
c.Images[images.SmallDimName] = icon
|
||||||
|
s.m.allContacts.Store(c.ID, c)
|
||||||
|
|
||||||
|
// Generate a shared URL
|
||||||
|
u, err := s.m.ShareUserURLWithData(c.ID)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
// Update contact info locally after creating the shared URL
|
||||||
|
// This is required to test that URL-decoded data is not used in the preview.
|
||||||
|
c.Bio = "TestBio_2"
|
||||||
|
c.DisplayName = "TestDisplayName_2"
|
||||||
|
s.m.allContacts.Store(c.ID, c)
|
||||||
|
|
||||||
|
r, err := s.m.UnfurlURLs(nil, []string{u})
|
||||||
|
s.Require().NoError(err)
|
||||||
|
s.Require().Len(r.StatusLinkPreviews, 1)
|
||||||
|
s.Require().Len(r.LinkPreviews, 0)
|
||||||
|
|
||||||
|
preview := r.StatusLinkPreviews[0]
|
||||||
|
s.Require().Equal(u, preview.URL)
|
||||||
|
s.Require().Nil(preview.Community)
|
||||||
|
s.Require().Nil(preview.Channel)
|
||||||
|
s.Require().NotNil(preview.Contact)
|
||||||
|
s.Require().Equal(shortKey, preview.Contact.PublicKey)
|
||||||
|
s.Require().Equal(c.DisplayName, preview.Contact.DisplayName)
|
||||||
|
s.Require().Equal(c.Bio, preview.Contact.Description)
|
||||||
|
s.Require().Equal(icon.Width, preview.Contact.Icon.Width)
|
||||||
|
s.Require().Equal(icon.Height, preview.Contact.Icon.Height)
|
||||||
|
s.Require().Equal("", preview.Contact.Icon.URL)
|
||||||
|
|
||||||
|
expectedDataURI, err := images.GetPayloadDataURI(icon.Payload)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
s.Require().Equal(expectedDataURI, preview.Contact.Icon.DataURI)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *MessengerLinkPreviewsTestSuite) Test_UnfurlURLs_StatusCommunityJoined() {
|
||||||
|
|
||||||
|
description := &requests.CreateCommunity{
|
||||||
|
Membership: protobuf.CommunityPermissions_NO_MEMBERSHIP,
|
||||||
|
Name: "status",
|
||||||
|
Description: "status community description",
|
||||||
|
Color: "#123456",
|
||||||
|
Image: "../_assets/tests/status.png", // 256*256 px
|
||||||
|
ImageAx: 0,
|
||||||
|
ImageAy: 0,
|
||||||
|
ImageBx: 256,
|
||||||
|
ImageBy: 256,
|
||||||
|
Banner: images.CroppedImage{
|
||||||
|
ImagePath: "../_assets/tests/IMG_1205.HEIC.jpg", // 2282*3352 px
|
||||||
|
X: 0,
|
||||||
|
Y: 0,
|
||||||
|
Width: 160,
|
||||||
|
Height: 90,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
response, err := s.m.CreateCommunity(description, false)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
s.Require().NotNil(response)
|
||||||
|
|
||||||
|
community := response.Communities()[0]
|
||||||
|
communityImages := community.Images()
|
||||||
|
s.Require().Len(communityImages, 3)
|
||||||
|
|
||||||
|
// Get icon data
|
||||||
|
icon, ok := communityImages[images.SmallDimName]
|
||||||
|
s.Require().True(ok)
|
||||||
|
iconWidth, iconHeight, err := images.GetImageDimensions(icon.Payload)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
iconDataURI, err := images.GetPayloadDataURI(icon.Payload)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
// Get banner data
|
||||||
|
banner, ok := communityImages[images.BannerIdentityName]
|
||||||
|
s.Require().True(ok)
|
||||||
|
bannerWidth, bannerHeight, err := images.GetImageDimensions(banner.Payload)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
bannerDataURI, err := images.GetPayloadDataURI(banner.Payload)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
// Create shared URL
|
||||||
|
u, err := s.m.ShareCommunityURLWithData(community.ID())
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
// Unfurl community shared URL
|
||||||
|
r, err := s.m.UnfurlURLs(nil, []string{u})
|
||||||
|
s.Require().NoError(err)
|
||||||
|
s.Require().Len(r.StatusLinkPreviews, 1)
|
||||||
|
s.Require().Len(r.LinkPreviews, 0)
|
||||||
|
|
||||||
|
preview := r.StatusLinkPreviews[0]
|
||||||
|
s.Require().Equal(u, preview.URL)
|
||||||
|
s.Require().NotNil(preview.Community)
|
||||||
|
s.Require().Nil(preview.Channel)
|
||||||
|
s.Require().Nil(preview.Contact)
|
||||||
|
|
||||||
|
s.Require().Equal(community.IDString(), preview.Community.CommunityID)
|
||||||
|
s.Require().Equal(community.Name(), preview.Community.DisplayName)
|
||||||
|
s.Require().Equal(community.Identity().Description, preview.Community.Description)
|
||||||
|
s.Require().Equal(iconWidth, preview.Community.Icon.Width)
|
||||||
|
s.Require().Equal(iconHeight, preview.Community.Icon.Height)
|
||||||
|
s.Require().Equal(iconDataURI, preview.Community.Icon.DataURI)
|
||||||
|
s.Require().Equal(bannerWidth, preview.Community.Banner.Width)
|
||||||
|
s.Require().Equal(bannerHeight, preview.Community.Banner.Height)
|
||||||
|
s.Require().Equal(bannerDataURI, preview.Community.Banner.DataURI)
|
||||||
|
}
|
||||||
|
|
|
@ -55,6 +55,9 @@ func (m *Messenger) EditMessage(ctx context.Context, request *requests.EditMessa
|
||||||
if len(request.LinkPreviews) > 0 {
|
if len(request.LinkPreviews) > 0 {
|
||||||
message.LinkPreviews = request.LinkPreviews
|
message.LinkPreviews = request.LinkPreviews
|
||||||
}
|
}
|
||||||
|
if len(request.StatusLinkPreviews) > 0 {
|
||||||
|
message.StatusLinkPreviews = request.StatusLinkPreviews
|
||||||
|
}
|
||||||
|
|
||||||
clock, _ := chat.NextClockAndTimestamp(m.getTimesource())
|
clock, _ := chat.NextClockAndTimestamp(m.getTimesource())
|
||||||
|
|
||||||
|
@ -65,12 +68,19 @@ func (m *Messenger) EditMessage(ctx context.Context, request *requests.EditMessa
|
||||||
editMessage.ChatId = message.ChatId
|
editMessage.ChatId = message.ChatId
|
||||||
editMessage.MessageId = message.ID
|
editMessage.MessageId = message.ID
|
||||||
editMessage.Clock = clock
|
editMessage.Clock = clock
|
||||||
|
|
||||||
unfurledLinks, err := message.ConvertLinkPreviewsToProto()
|
unfurledLinks, err := message.ConvertLinkPreviewsToProto()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
editMessage.UnfurledLinks = unfurledLinks
|
editMessage.UnfurledLinks = unfurledLinks
|
||||||
|
|
||||||
|
unfurledStatusLinks, err := message.ConvertStatusLinkPreviewsToProto()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
editMessage.UnfurledStatusLinks = unfurledStatusLinks
|
||||||
|
|
||||||
err = m.applyEditMessage(editMessage.EditMessage, message)
|
err = m.applyEditMessage(editMessage.EditMessage, message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -346,6 +356,7 @@ func (m *Messenger) applyEditMessage(editMessage *protobuf.EditMessage, message
|
||||||
message.Text = editMessage.Text
|
message.Text = editMessage.Text
|
||||||
message.EditedAt = editMessage.Clock
|
message.EditedAt = editMessage.Clock
|
||||||
message.UnfurledLinks = editMessage.UnfurledLinks
|
message.UnfurledLinks = editMessage.UnfurledLinks
|
||||||
|
message.UnfurledStatusLinks = editMessage.UnfurledStatusLinks
|
||||||
if editMessage.ContentType != protobuf.ChatMessage_UNKNOWN_CONTENT_TYPE {
|
if editMessage.ContentType != protobuf.ChatMessage_UNKNOWN_CONTENT_TYPE {
|
||||||
message.ContentType = editMessage.ContentType
|
message.ContentType = editMessage.ContentType
|
||||||
}
|
}
|
||||||
|
@ -360,6 +371,7 @@ func (m *Messenger) applyEditMessage(editMessage *protobuf.EditMessage, message
|
||||||
originalEdit.ContentType = message.ContentType
|
originalEdit.ContentType = message.ContentType
|
||||||
originalEdit.From = message.From
|
originalEdit.From = message.From
|
||||||
originalEdit.UnfurledLinks = message.UnfurledLinks
|
originalEdit.UnfurledLinks = message.UnfurledLinks
|
||||||
|
originalEdit.UnfurledStatusLinks = message.UnfurledStatusLinks
|
||||||
err := m.persistence.SaveEdit(originalEdit)
|
err := m.persistence.SaveEdit(originalEdit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -41,10 +41,10 @@ type ContactURLData struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type URLDataResponse struct {
|
type URLDataResponse struct {
|
||||||
Community CommunityURLData `json:"community"`
|
Community *CommunityURLData `json:"community"`
|
||||||
Channel CommunityChannelURLData `json:"channel"`
|
Channel *CommunityChannelURLData `json:"channel"`
|
||||||
Contact ContactURLData `json:"contact"`
|
Contact *ContactURLData `json:"contact"`
|
||||||
Shard *common.Shard `json:"shard,omitempty"`
|
Shard *common.Shard `json:"shard,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
const baseShareURL = "https://status.app"
|
const baseShareURL = "https://status.app"
|
||||||
|
@ -92,8 +92,8 @@ func (m *Messenger) ShareCommunityURLWithChatKey(communityID types.HexBytes) (st
|
||||||
return fmt.Sprintf("%s/c#%s", baseShareURL, shortKey), nil
|
return fmt.Sprintf("%s/c#%s", baseShareURL, shortKey), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) prepareCommunityData(community *communities.Community) CommunityURLData {
|
func (m *Messenger) prepareCommunityData(community *communities.Community) *CommunityURLData {
|
||||||
return CommunityURLData{
|
return &CommunityURLData{
|
||||||
DisplayName: community.Identity().DisplayName,
|
DisplayName: community.Identity().DisplayName,
|
||||||
Description: community.DescriptionText(),
|
Description: community.DescriptionText(),
|
||||||
MembersCount: uint32(community.MembersCount()),
|
MembersCount: uint32(community.MembersCount()),
|
||||||
|
@ -203,7 +203,7 @@ func (m *Messenger) parseCommunityURLWithData(data string, chatKey string) (*URL
|
||||||
}
|
}
|
||||||
|
|
||||||
return &URLDataResponse{
|
return &URLDataResponse{
|
||||||
Community: CommunityURLData{
|
Community: &CommunityURLData{
|
||||||
DisplayName: communityProto.DisplayName,
|
DisplayName: communityProto.DisplayName,
|
||||||
Description: communityProto.Description,
|
Description: communityProto.Description,
|
||||||
MembersCount: communityProto.MembersCount,
|
MembersCount: communityProto.MembersCount,
|
||||||
|
@ -237,8 +237,8 @@ func (m *Messenger) ShareCommunityChannelURLWithChatKey(request *requests.Commun
|
||||||
return fmt.Sprintf("%s/cc/%s#%s", baseShareURL, request.ChannelID, shortKey), nil
|
return fmt.Sprintf("%s/cc/%s#%s", baseShareURL, request.ChannelID, shortKey), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) prepareCommunityChannelData(channel *protobuf.CommunityChat) CommunityChannelURLData {
|
func (m *Messenger) prepareCommunityChannelData(channel *protobuf.CommunityChat) *CommunityChannelURLData {
|
||||||
return CommunityChannelURLData{
|
return &CommunityChannelURLData{
|
||||||
Emoji: channel.Identity.Emoji,
|
Emoji: channel.Identity.Emoji,
|
||||||
DisplayName: channel.Identity.DisplayName,
|
DisplayName: channel.Identity.DisplayName,
|
||||||
Description: channel.Identity.Description,
|
Description: channel.Identity.Description,
|
||||||
|
@ -383,7 +383,7 @@ func (m *Messenger) parseCommunityChannelURLWithData(data string, chatKey string
|
||||||
}
|
}
|
||||||
|
|
||||||
return &URLDataResponse{
|
return &URLDataResponse{
|
||||||
Community: CommunityURLData{
|
Community: &CommunityURLData{
|
||||||
DisplayName: channelProto.Community.DisplayName,
|
DisplayName: channelProto.Community.DisplayName,
|
||||||
Description: channelProto.Community.Description,
|
Description: channelProto.Community.Description,
|
||||||
MembersCount: channelProto.Community.MembersCount,
|
MembersCount: channelProto.Community.MembersCount,
|
||||||
|
@ -391,7 +391,7 @@ func (m *Messenger) parseCommunityChannelURLWithData(data string, chatKey string
|
||||||
TagIndices: channelProto.Community.TagIndices,
|
TagIndices: channelProto.Community.TagIndices,
|
||||||
CommunityID: types.EncodeHex(communityID),
|
CommunityID: types.EncodeHex(communityID),
|
||||||
},
|
},
|
||||||
Channel: CommunityChannelURLData{
|
Channel: &CommunityChannelURLData{
|
||||||
Emoji: channelProto.Emoji,
|
Emoji: channelProto.Emoji,
|
||||||
DisplayName: channelProto.DisplayName,
|
DisplayName: channelProto.DisplayName,
|
||||||
Description: channelProto.Description,
|
Description: channelProto.Description,
|
||||||
|
@ -416,8 +416,8 @@ func (m *Messenger) ShareUserURLWithChatKey(contactID string) (string, error) {
|
||||||
return fmt.Sprintf("%s/u#%s", baseShareURL, shortKey), nil
|
return fmt.Sprintf("%s/u#%s", baseShareURL, shortKey), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) prepareContactData(contact *Contact) ContactURLData {
|
func (m *Messenger) prepareContactData(contact *Contact) *ContactURLData {
|
||||||
return ContactURLData{
|
return &ContactURLData{
|
||||||
DisplayName: contact.DisplayName,
|
DisplayName: contact.DisplayName,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -471,6 +471,7 @@ func (m *Messenger) prepareEncodedUserData(contact *Contact) (string, string, er
|
||||||
|
|
||||||
userProto := &protobuf.User{
|
userProto := &protobuf.User{
|
||||||
DisplayName: contact.DisplayName,
|
DisplayName: contact.DisplayName,
|
||||||
|
Description: contact.Bio,
|
||||||
}
|
}
|
||||||
|
|
||||||
userData, err := proto.Marshal(userProto)
|
userData, err := proto.Marshal(userProto)
|
||||||
|
@ -528,7 +529,7 @@ func (m *Messenger) parseUserURLWithData(data string, chatKey string) (*URLDataR
|
||||||
}
|
}
|
||||||
|
|
||||||
return &URLDataResponse{
|
return &URLDataResponse{
|
||||||
Contact: ContactURLData{
|
Contact: &ContactURLData{
|
||||||
DisplayName: userProto.DisplayName,
|
DisplayName: userProto.DisplayName,
|
||||||
Description: userProto.Description,
|
Description: userProto.Description,
|
||||||
PublicKey: chatKey,
|
PublicKey: chatKey,
|
||||||
|
@ -536,8 +537,12 @@ func (m *Messenger) parseUserURLWithData(data string, chatKey string) (*URLDataR
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) IsStatusSharedURL(url string) bool {
|
||||||
|
return strings.HasPrefix(url, baseShareURL)
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Messenger) ParseSharedURL(url string) (*URLDataResponse, error) {
|
func (m *Messenger) ParseSharedURL(url string) (*URLDataResponse, error) {
|
||||||
if !strings.HasPrefix(url, baseShareURL) {
|
if !m.IsStatusSharedURL(url) {
|
||||||
return nil, fmt.Errorf("url should start with '%s'", baseShareURL)
|
return nil, fmt.Errorf("url should start with '%s'", baseShareURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -205,6 +205,7 @@ func (s *MessengerShareUrlsSuite) TestParseCommunityURLWithData() {
|
||||||
s.Require().NotNil(urlData)
|
s.Require().NotNil(urlData)
|
||||||
|
|
||||||
s.Require().NotNil(urlData.Community)
|
s.Require().NotNil(urlData.Community)
|
||||||
|
s.Require().Equal("0x02a3d2fdb9ac335917bf9d46b38d7496c00bbfadbaf832e8aa61d13ac2b4452084", urlData.Community.CommunityID)
|
||||||
s.Require().Equal("Doodles", urlData.Community.DisplayName)
|
s.Require().Equal("Doodles", urlData.Community.DisplayName)
|
||||||
s.Require().Equal("Coloring the world with joy • ᴗ •", urlData.Community.Description)
|
s.Require().Equal("Coloring the world with joy • ᴗ •", urlData.Community.Description)
|
||||||
s.Require().Equal(uint32(446744), urlData.Community.MembersCount)
|
s.Require().Equal(uint32(446744), urlData.Community.MembersCount)
|
||||||
|
@ -362,7 +363,7 @@ func (s *MessengerShareUrlsSuite) TestParseUserURLWithChatKey() {
|
||||||
|
|
||||||
s.Require().NotNil(urlData.Contact)
|
s.Require().NotNil(urlData.Contact)
|
||||||
s.Require().Equal(contact.DisplayName, urlData.Contact.DisplayName)
|
s.Require().Equal(contact.DisplayName, urlData.Contact.DisplayName)
|
||||||
s.Require().Equal(contact.Bio, urlData.Contact.DisplayName)
|
s.Require().Equal(contact.Bio, urlData.Contact.Description)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MessengerShareUrlsSuite) TestShareUserURLWithENS() {
|
func (s *MessengerShareUrlsSuite) TestShareUserURLWithENS() {
|
||||||
|
|
|
@ -2312,6 +2312,21 @@ func (s *MessengerSuite) TestSendMessageWithPreviews() {
|
||||||
}
|
}
|
||||||
inputMsg.LinkPreviews = []common.LinkPreview{preview}
|
inputMsg.LinkPreviews = []common.LinkPreview{preview}
|
||||||
|
|
||||||
|
sentContactPreview := common.StatusLinkPreview{
|
||||||
|
URL: "https://status.app/u/TestUrl",
|
||||||
|
Contact: &common.StatusContactLinkPreview{
|
||||||
|
PublicKey: "TestPublicKey",
|
||||||
|
DisplayName: "TestDisplayName",
|
||||||
|
Description: "Test description",
|
||||||
|
Icon: common.LinkPreviewThumbnail{
|
||||||
|
Width: 100,
|
||||||
|
Height: 200,
|
||||||
|
DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
inputMsg.StatusLinkPreviews = []common.StatusLinkPreview{sentContactPreview}
|
||||||
|
|
||||||
_, err = s.m.SendChatMessage(context.Background(), inputMsg)
|
_, err = s.m.SendChatMessage(context.Background(), inputMsg)
|
||||||
s.NoError(err)
|
s.NoError(err)
|
||||||
|
|
||||||
|
@ -2322,14 +2337,14 @@ func (s *MessengerSuite) TestSendMessageWithPreviews() {
|
||||||
|
|
||||||
// Test unfurled links have been saved.
|
// Test unfurled links have been saved.
|
||||||
s.Require().Len(savedMsg.UnfurledLinks, 1)
|
s.Require().Len(savedMsg.UnfurledLinks, 1)
|
||||||
unfurledLink := savedMsg.UnfurledLinks[0]
|
savedLinkProto := savedMsg.UnfurledLinks[0]
|
||||||
s.Require().Equal(preview.Type, unfurledLink.Type)
|
s.Require().Equal(preview.Type, savedLinkProto.Type)
|
||||||
s.Require().Equal(preview.URL, unfurledLink.Url)
|
s.Require().Equal(preview.URL, savedLinkProto.Url)
|
||||||
s.Require().Equal(preview.Title, unfurledLink.Title)
|
s.Require().Equal(preview.Title, savedLinkProto.Title)
|
||||||
s.Require().Equal(preview.Description, unfurledLink.Description)
|
s.Require().Equal(preview.Description, savedLinkProto.Description)
|
||||||
|
|
||||||
// Test the saved link thumbnail can be encoded as a data URI.
|
// Test the saved link thumbnail can be encoded as a data URI.
|
||||||
expectedDataURI, err := images.GetPayloadDataURI(unfurledLink.ThumbnailPayload)
|
expectedDataURI, err := images.GetPayloadDataURI(savedLinkProto.ThumbnailPayload)
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
s.Require().Equal(preview.Thumbnail.DataURI, expectedDataURI)
|
s.Require().Equal(preview.Thumbnail.DataURI, expectedDataURI)
|
||||||
|
|
||||||
|
@ -2337,6 +2352,43 @@ func (s *MessengerSuite) TestSendMessageWithPreviews() {
|
||||||
httpServer.MakeLinkPreviewThumbnailURL(inputMsg.ID, preview.URL),
|
httpServer.MakeLinkPreviewThumbnailURL(inputMsg.ID, preview.URL),
|
||||||
savedMsg.LinkPreviews[0].Thumbnail.URL,
|
savedMsg.LinkPreviews[0].Thumbnail.URL,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Check saved message protobuf fields
|
||||||
|
s.Require().NotNil(savedMsg.UnfurledStatusLinks)
|
||||||
|
s.Require().Len(savedMsg.UnfurledStatusLinks.UnfurledStatusLinks, 1)
|
||||||
|
savedStatusLinkProto := savedMsg.UnfurledStatusLinks.UnfurledStatusLinks[0]
|
||||||
|
s.Require().Equal(sentContactPreview.URL, savedStatusLinkProto.Url)
|
||||||
|
s.Require().NotNil(savedStatusLinkProto.GetContact())
|
||||||
|
s.Require().Nil(savedStatusLinkProto.GetCommunity())
|
||||||
|
s.Require().Nil(savedStatusLinkProto.GetChannel())
|
||||||
|
|
||||||
|
savedContactProto := savedStatusLinkProto.GetContact()
|
||||||
|
s.Require().Equal(sentContactPreview.Contact.PublicKey, string(savedContactProto.PublicKey))
|
||||||
|
s.Require().Equal(sentContactPreview.Contact.DisplayName, savedContactProto.DisplayName)
|
||||||
|
s.Require().Equal(sentContactPreview.Contact.Description, savedContactProto.Description)
|
||||||
|
s.Require().NotNil(savedContactProto.Icon)
|
||||||
|
s.Require().Equal(sentContactPreview.Contact.Icon.Width, int(savedContactProto.Icon.Width))
|
||||||
|
s.Require().Equal(sentContactPreview.Contact.Icon.Height, int(savedContactProto.Icon.Height))
|
||||||
|
|
||||||
|
iconDataURI, err := images.GetPayloadDataURI(savedContactProto.Icon.Payload)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
s.Require().Equal(sentContactPreview.Contact.Icon.DataURI, iconDataURI)
|
||||||
|
|
||||||
|
// Check message `StatusLinkPreviews` properties
|
||||||
|
s.Require().Len(savedMsg.StatusLinkPreviews, 1)
|
||||||
|
savedStatusLinkPreview := savedMsg.StatusLinkPreviews[0]
|
||||||
|
s.Require().Equal(sentContactPreview.URL, savedStatusLinkPreview.URL)
|
||||||
|
s.Require().NotNil(savedStatusLinkPreview.Contact)
|
||||||
|
|
||||||
|
savedContact := savedStatusLinkPreview.Contact
|
||||||
|
s.Require().Equal(sentContactPreview.Contact.PublicKey, savedContact.PublicKey)
|
||||||
|
s.Require().Equal(sentContactPreview.Contact.DisplayName, savedContact.DisplayName)
|
||||||
|
s.Require().Equal(sentContactPreview.Contact.Description, savedContact.Description)
|
||||||
|
s.Require().NotNil(savedContact.Icon)
|
||||||
|
s.Require().Equal(sentContactPreview.Contact.Icon.Width, savedContact.Icon.Width)
|
||||||
|
s.Require().Equal(sentContactPreview.Contact.Icon.Height, savedContact.Icon.Height)
|
||||||
|
expectedIconURL := httpServer.MakeStatusLinkPreviewThumbnailURL(inputMsg.ID, sentContactPreview.URL, "contact-icon")
|
||||||
|
s.Require().Equal(expectedIconURL, savedContact.Icon.URL)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MessengerSuite) TestMessageSent() {
|
func (s *MessengerSuite) TestMessageSent() {
|
||||||
|
|
|
@ -102,6 +102,7 @@
|
||||||
// 1689931300_add_community_tokens_deployer_and_priv_level.up.sql (156B)
|
// 1689931300_add_community_tokens_deployer_and_priv_level.up.sql (156B)
|
||||||
// 1693311881_add_unfurled_links_to_message_edits.up.sql (64B)
|
// 1693311881_add_unfurled_links_to_message_edits.up.sql (64B)
|
||||||
// 1693311981_community_shard.up.sql (156B)
|
// 1693311981_community_shard.up.sql (156B)
|
||||||
|
// 1695331492_add_status_link_previews.up.sql (136B)
|
||||||
// README.md (554B)
|
// README.md (554B)
|
||||||
// doc.go (850B)
|
// doc.go (850B)
|
||||||
|
|
||||||
|
@ -187,7 +188,7 @@ func _000001_initDownDbSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -207,7 +208,7 @@ func _000001_initUpDbSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -227,7 +228,7 @@ func _000002_add_last_ens_clock_valueUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -247,7 +248,7 @@ func _1586358095_add_replaceUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -267,7 +268,7 @@ func _1588665364_add_image_dataUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -287,7 +288,7 @@ func _1589365189_add_pow_targetUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -307,7 +308,7 @@ func _1591277220_add_index_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -327,7 +328,7 @@ func _1593087212_add_mute_chat_and_raw_message_fieldsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -347,7 +348,7 @@ func _1595862781_add_audio_dataUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -367,7 +368,7 @@ func _1595865249_create_emoji_reactions_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -387,7 +388,7 @@ func _1596805115_create_group_chat_invitations_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -407,7 +408,7 @@ func _1597322655_add_invitation_admin_chat_fieldUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -427,7 +428,7 @@ func _1597757544_add_nicknameUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -447,7 +448,7 @@ func _1598955122_add_mentionsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -467,7 +468,7 @@ func _1599641390_add_emoji_reactions_indexUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -487,7 +488,7 @@ func _1599720851_add_seen_index_remove_long_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -507,7 +508,7 @@ func _1603198582_add_profile_chat_fieldUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -527,7 +528,7 @@ func _1603816533_add_linksUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -547,7 +548,7 @@ func _1603888149_create_chat_identity_last_published_tableUpSql() (*asset, error
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -567,7 +568,7 @@ func _1605075346_add_communitiesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -587,7 +588,7 @@ func _1610117927_add_message_cacheUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -607,7 +608,7 @@ func _1610959908_add_dont_wrap_to_raw_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -627,7 +628,7 @@ func _1610960912_add_send_on_personal_topicUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -647,7 +648,7 @@ func _1612870480_add_datasync_idUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -667,7 +668,7 @@ func _1614152139_add_communities_request_to_joinUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -687,7 +688,7 @@ func _1615374373_add_confirmationsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -707,7 +708,7 @@ func _1617694931_add_notification_centerUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -727,7 +728,7 @@ func _1618923660_create_pin_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -747,7 +748,7 @@ func _1619094007_add_joined_chat_fieldUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -767,7 +768,7 @@ func _1619099821_add_last_synced_fieldUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -787,7 +788,7 @@ func _1621933219_add_mentionedUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -807,7 +808,7 @@ func _1622010048_add_unviewed_mentions_countUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -827,7 +828,7 @@ func _1622061278_add_message_activity_center_notification_fieldUpSql() (*asset,
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -847,7 +848,7 @@ func _1622464518_set_synced_to_fromUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -867,7 +868,7 @@ func _1622464519_add_chat_descriptionUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -887,7 +888,7 @@ func _1622622253_add_pinned_by_to_pin_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -907,7 +908,7 @@ func _1623938329_add_author_activity_center_notification_fieldUpSql() (*asset, e
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -927,7 +928,7 @@ func _1623938330_add_edit_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -947,7 +948,7 @@ func _1624978434_add_muted_communityUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -967,7 +968,7 @@ func _1625018910_add_repply_message_activity_center_notification_fieldUpSql() (*
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -987,7 +988,7 @@ func _1625762506_add_deleted_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1007,7 +1008,7 @@ func _1627388946_add_communities_synced_atUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1027,7 +1028,7 @@ func _1628280060_createUsermessagesIndexSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1047,7 +1048,7 @@ func _1632303896_modify_contacts_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1067,7 +1068,7 @@ func _1633349838_add_emoji_column_in_chatsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1087,7 +1088,7 @@ func _1634831235_add_highlight_column_in_chatsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1107,7 +1108,7 @@ func _1634896007_add_last_updated_locally_and_removedUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1127,7 +1128,7 @@ func _1635840039_add_clock_read_at_column_in_chatsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1147,7 +1148,7 @@ func _1637852321_add_received_invitation_admin_column_in_chatsUpSql() (*asset, e
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1167,7 +1168,7 @@ func _1645034601_display_nameUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1187,7 +1188,7 @@ func _1645034602_add_mutual_contact_requestUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1207,7 +1208,7 @@ func _1650373957_add_contact_request_stateUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1227,7 +1228,7 @@ func _1656958989_contact_verificationUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1247,7 +1248,7 @@ func _1658236268_add_discord_message_authors_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1267,7 +1268,7 @@ func _1659619997_add_discord_messages_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1287,7 +1288,7 @@ func _1660226788_create_chat_identity_social_linksUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1307,7 +1308,7 @@ func _1660226789_add_walletconnectsessions_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1327,7 +1328,7 @@ func _1661242854_add_communities_requests_to_leaveUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1347,7 +1348,7 @@ func _1662044232_add_chat_imageUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1367,7 +1368,7 @@ func _1662106895_add_chat_first_message_timestampUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1387,7 +1388,7 @@ func _1662723928_add_discord_author_image_fieldsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1407,7 +1408,7 @@ func _1664195977_add_deleted_for_mesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1427,7 +1428,7 @@ func _1664367420_add_discord_attachments_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1447,7 +1448,7 @@ func _1665079662_add_spectated_column_in_communitiesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1467,7 +1468,7 @@ func _1665479047_add_community_id_in_notificationsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1487,7 +1488,7 @@ func _1665484435_add_encrypted_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1507,7 +1508,7 @@ func _1665560200_add_contact_verification_individualUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1527,7 +1528,7 @@ func _1670921937_add_album_idUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0664), modTime: time.Unix(1671559305, 0)}
|
info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1547,7 +1548,7 @@ func _1673373000_add_repliedUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0664), modTime: time.Unix(1673398499, 0)}
|
info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1567,7 +1568,7 @@ func _1673428910_add_image_width_heightUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0664), modTime: time.Unix(1673527384, 0)}
|
info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1587,7 +1588,7 @@ func _1674210659_add_contact_request_local_clockUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0664), modTime: time.Unix(1675294606, 0)}
|
info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1607,7 +1608,7 @@ func _1675212323_add_deleted_byUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0664), modTime: time.Unix(1675294606, 0)}
|
info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1627,7 +1628,7 @@ func _1675247084_add_activity_center_statesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0664), modTime: time.Unix(1676987564, 0)}
|
info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1647,7 +1648,7 @@ func _1675272329_fix_protocol_migrationUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0664), modTime: time.Unix(1675294606, 0)}
|
info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1667,7 +1668,7 @@ func _1676998418_fix_activity_center_migrationUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0664), modTime: time.Unix(1677251785, 0)}
|
info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1687,7 +1688,7 @@ func _1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql(
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0664), modTime: time.Unix(1677714914, 0)}
|
info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1707,7 +1708,7 @@ func _1677486338_add_community_tokens_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0664), modTime: time.Unix(1677714914, 0)}
|
info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1727,7 +1728,7 @@ func _1678292329_add_collapsed_categoriesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0664), modTime: time.Unix(1679924157, 0)}
|
info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1747,7 +1748,7 @@ func _1678800760_add_index_to_raw_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0664), modTime: time.Unix(1679924157, 0)}
|
info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1767,7 +1768,7 @@ func _1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql(
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0664), modTime: time.Unix(1679924157, 0)}
|
info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1787,7 +1788,7 @@ func _1679326850_add_community_token_ownersUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0664), modTime: time.Unix(1680094975, 0)}
|
info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1807,7 +1808,7 @@ func _1680011500_add_album_images_countUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0664), modTime: time.Unix(1681392552, 0)}
|
info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1827,7 +1828,7 @@ func _1680114896_add_index_on_album_idUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1681392552, 0)}
|
info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1847,7 +1848,7 @@ func _1681655289_add_mute_tillUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0664), modTime: time.Unix(1683581866, 0)}
|
info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1867,7 +1868,7 @@ func _1681934966_add_index_response_toUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1683581866, 0)}
|
info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1887,7 +1888,7 @@ func _1682528339_add_index_user_messages_unseenUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0664), modTime: time.Unix(1683581871, 0)}
|
info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1907,7 +1908,7 @@ func _1683707289_recreate_deleted_for_mesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0664), modTime: time.Unix(1683894948, 0)}
|
info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1927,7 +1928,7 @@ func _1683725607_mark_discord_messages_as_seenUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0664), modTime: time.Unix(1683894948, 0)}
|
info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1947,7 +1948,7 @@ func _1684174617_add_url_previews_to_user_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1684174617_add_url_previews_to_user_messages.up.sql", size: 58, mode: os.FileMode(0664), modTime: time.Unix(1685365190, 0)}
|
info := bindataFileInfo{name: "1684174617_add_url_previews_to_user_messages.up.sql", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1967,7 +1968,7 @@ func _1684175608_add_token_balancesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1684175608_add_token_balances.up.sql", size: 467, mode: os.FileMode(0664), modTime: time.Unix(1685365190, 0)}
|
info := bindataFileInfo{name: "1684175608_add_token_balances.up.sql", size: 467, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x4e, 0xe0, 0x48, 0x34, 0x1, 0x4d, 0x88, 0x11, 0x54, 0x20, 0x52, 0x5c, 0x57, 0x14, 0xa9, 0xa9, 0x36, 0xa4, 0x28, 0x59, 0x48, 0xa8, 0xa, 0x76, 0xec, 0x37, 0xee, 0x9e, 0xd2, 0x20, 0xaa}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x4e, 0xe0, 0x48, 0x34, 0x1, 0x4d, 0x88, 0x11, 0x54, 0x20, 0x52, 0x5c, 0x57, 0x14, 0xa9, 0xa9, 0x36, 0xa4, 0x28, 0x59, 0x48, 0xa8, 0xa, 0x76, 0xec, 0x37, 0xee, 0x9e, 0xd2, 0x20, 0xaa}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1987,7 +1988,7 @@ func _1684979808_sync_activity_center_notificationsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1684979808_sync_activity_center_notifications.up.sql", size: 169, mode: os.FileMode(0664), modTime: time.Unix(1687991048, 0)}
|
info := bindataFileInfo{name: "1684979808_sync_activity_center_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd8, 0xf5, 0xf7, 0x94, 0xa9, 0xa1, 0x60, 0x26, 0x9d, 0xca, 0x31, 0xf, 0x14, 0xd, 0x70, 0xf8, 0xab, 0x40, 0x29, 0x73, 0x61, 0xbd, 0x1b, 0xb6, 0xc4, 0x31, 0x77, 0x9e, 0x32, 0xa8, 0xce, 0x6d}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd8, 0xf5, 0xf7, 0x94, 0xa9, 0xa1, 0x60, 0x26, 0x9d, 0xca, 0x31, 0xf, 0x14, 0xd, 0x70, 0xf8, 0xab, 0x40, 0x29, 0x73, 0x61, 0xbd, 0x1b, 0xb6, 0xc4, 0x31, 0x77, 0x9e, 0x32, 0xa8, 0xce, 0x6d}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2007,7 +2008,7 @@ func _1685383829_add_communities_mute_tillUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1685383829_add_communities_mute_till.up.sql", size: 69, mode: os.FileMode(0664), modTime: time.Unix(1692114327, 0)}
|
info := bindataFileInfo{name: "1685383829_add_communities_mute_till.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbf, 0x58, 0x96, 0xe5, 0x66, 0xcb, 0xde, 0xed, 0x76, 0xb8, 0x5a, 0x86, 0x81, 0x9a, 0x60, 0x51, 0x12, 0x37, 0x54, 0x9a, 0x36, 0x3e, 0xd1, 0x4a, 0xbe, 0x9a, 0xab, 0x20, 0x7f, 0x1d, 0xf4, 0x73}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbf, 0x58, 0x96, 0xe5, 0x66, 0xcb, 0xde, 0xed, 0x76, 0xb8, 0x5a, 0x86, 0x81, 0x9a, 0x60, 0x51, 0x12, 0x37, 0x54, 0x9a, 0x36, 0x3e, 0xd1, 0x4a, 0xbe, 0x9a, 0xab, 0x20, 0x7f, 0x1d, 0xf4, 0x73}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2027,7 +2028,7 @@ func _1685964183_add_chainids_to_revealed_addressesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1685964183_add_chainids_to_revealed_addresses.up.sql", size: 88, mode: os.FileMode(0664), modTime: time.Unix(1687991048, 0)}
|
info := bindataFileInfo{name: "1685964183_add_chainids_to_revealed_addresses.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0xb5, 0xa8, 0xd7, 0xad, 0x9c, 0x54, 0xa5, 0xe9, 0xdb, 0x42, 0x2d, 0xd0, 0xd7, 0x22, 0x1, 0x93, 0xf3, 0x4f, 0x53, 0xf7, 0x1e, 0xbe, 0x4b, 0xac, 0xc7, 0x63, 0x15, 0xdf, 0xe0, 0x6, 0xf8}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0xb5, 0xa8, 0xd7, 0xad, 0x9c, 0x54, 0xa5, 0xe9, 0xdb, 0x42, 0x2d, 0xd0, 0xd7, 0x22, 0x1, 0x93, 0xf3, 0x4f, 0x53, 0xf7, 0x1e, 0xbe, 0x4b, 0xac, 0xc7, 0x63, 0x15, 0xdf, 0xe0, 0x6, 0xf8}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2047,7 +2048,7 @@ func _1687370421_add_communities_muted_till_newUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1687370421_add_communities_muted_till_new.up.sql", size: 635, mode: os.FileMode(0664), modTime: time.Unix(1692114327, 0)}
|
info := bindataFileInfo{name: "1687370421_add_communities_muted_till_new.up.sql", size: 635, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x65, 0x73, 0x96, 0x1d, 0xc8, 0x3e, 0xca, 0xf5, 0xdc, 0xe3, 0xac, 0x3f, 0x9c, 0xc3, 0x67, 0x12, 0x9c, 0x19, 0x1, 0x4, 0x2b, 0xea, 0x6b, 0xe1, 0x59, 0x59, 0x89, 0x3d, 0xef, 0x4a, 0x6e, 0xbe}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x65, 0x73, 0x96, 0x1d, 0xc8, 0x3e, 0xca, 0xf5, 0xdc, 0xe3, 0xac, 0x3f, 0x9c, 0xc3, 0x67, 0x12, 0x9c, 0x19, 0x1, 0x4, 0x2b, 0xea, 0x6b, 0xe1, 0x59, 0x59, 0x89, 0x3d, 0xef, 0x4a, 0x6e, 0xbe}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2067,7 +2068,7 @@ func _1687416607_add_communities_check_channel_permission_responses_tableUpSql()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1687416607_add_communities_check_channel_permission_responses_table.up.sql", size: 739, mode: os.FileMode(0664), modTime: time.Unix(1692114327, 0)}
|
info := bindataFileInfo{name: "1687416607_add_communities_check_channel_permission_responses_table.up.sql", size: 739, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc2, 0x6, 0x3, 0x1a, 0xde, 0x9d, 0xbc, 0x50, 0x9d, 0xf1, 0x6d, 0x5a, 0x1c, 0x28, 0x92, 0x19, 0x89, 0x76, 0x4e, 0x8b, 0x60, 0xa9, 0xf, 0xe9, 0x76, 0xf1, 0xee, 0x75, 0x92, 0xbd, 0xda, 0x72}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc2, 0x6, 0x3, 0x1a, 0xde, 0x9d, 0xbc, 0x50, 0x9d, 0xf1, 0x6d, 0x5a, 0x1c, 0x28, 0x92, 0x19, 0x89, 0x76, 0x4e, 0x8b, 0x60, 0xa9, 0xf, 0xe9, 0x76, 0xf1, 0xee, 0x75, 0x92, 0xbd, 0xda, 0x72}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2087,7 +2088,7 @@ func _1687856939_add_community_tokens_decimalsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1687856939_add_community_tokens_decimals.up.sql", size: 65, mode: os.FileMode(0664), modTime: time.Unix(1692114327, 0)}
|
info := bindataFileInfo{name: "1687856939_add_community_tokens_decimals.up.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x59, 0x76, 0x42, 0x70, 0xc9, 0x7b, 0x16, 0xf6, 0xfe, 0x7, 0x1c, 0x99, 0xe5, 0x38, 0xfd, 0xa0, 0x3b, 0x93, 0x40, 0xbc, 0x66, 0xc2, 0xd1, 0xdd, 0xe9, 0xc7, 0xbf, 0xae, 0x36, 0xcc, 0x46, 0x57}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x59, 0x76, 0x42, 0x70, 0xc9, 0x7b, 0x16, 0xf6, 0xfe, 0x7, 0x1c, 0x99, 0xe5, 0x38, 0xfd, 0xa0, 0x3b, 0x93, 0x40, 0xbc, 0x66, 0xc2, 0xd1, 0xdd, 0xe9, 0xc7, 0xbf, 0xae, 0x36, 0xcc, 0x46, 0x57}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2107,7 +2108,7 @@ func _1687959987_modify_community_tokens_supply_as_stringUpSql() (*asset, error)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1687959987_modify_community_tokens_supply_as_string.up.sql", size: 77, mode: os.FileMode(0664), modTime: time.Unix(1692114327, 0)}
|
info := bindataFileInfo{name: "1687959987_modify_community_tokens_supply_as_string.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x57, 0x89, 0xbf, 0x9b, 0xed, 0x9b, 0x18, 0x3f, 0x84, 0xb5, 0x3c, 0x78, 0x40, 0x60, 0xea, 0x33, 0x26, 0x50, 0x3, 0xda, 0x28, 0x92, 0xd3, 0xb6, 0xff, 0x40, 0xa7, 0x19, 0x2, 0xa7, 0x17, 0xf9}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x57, 0x89, 0xbf, 0x9b, 0xed, 0x9b, 0x18, 0x3f, 0x84, 0xb5, 0x3c, 0x78, 0x40, 0x60, 0xea, 0x33, 0x26, 0x50, 0x3, 0xda, 0x28, 0x92, 0xd3, 0xb6, 0xff, 0x40, 0xa7, 0x19, 0x2, 0xa7, 0x17, 0xf9}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2127,7 +2128,7 @@ func _1689258900_add_airdrop_address_to_revealed_addressesUpSql() (*asset, error
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1689258900_add_airdrop_address_to_revealed_addresses.up.sql", size: 99, mode: os.FileMode(0664), modTime: time.Unix(1692114327, 0)}
|
info := bindataFileInfo{name: "1689258900_add_airdrop_address_to_revealed_addresses.up.sql", size: 99, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x7e, 0xaf, 0x5c, 0xd, 0xe5, 0x1e, 0x67, 0x1a, 0x6d, 0xd, 0x28, 0x20, 0x7a, 0x1a, 0x45, 0x6e, 0xba, 0x80, 0x91, 0xb0, 0xd6, 0xfd, 0xc2, 0xb9, 0x42, 0x5c, 0x8d, 0x6e, 0x3e, 0x6e, 0xb2}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x7e, 0xaf, 0x5c, 0xd, 0xe5, 0x1e, 0x67, 0x1a, 0x6d, 0xd, 0x28, 0x20, 0x7a, 0x1a, 0x45, 0x6e, 0xba, 0x80, 0x91, 0xb0, 0xd6, 0xfd, 0xc2, 0xb9, 0x42, 0x5c, 0x8d, 0x6e, 0x3e, 0x6e, 0xb2}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2147,7 +2148,7 @@ func _1689266326_create_communities_events_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1689266326_create_communities_events_table.up.sql", size: 164, mode: os.FileMode(0664), modTime: time.Unix(1692814344, 0)}
|
info := bindataFileInfo{name: "1689266326_create_communities_events_table.up.sql", size: 164, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x4e, 0xe, 0xba, 0x29, 0x16, 0x46, 0x38, 0x19, 0xa4, 0x5, 0x40, 0x46, 0xaf, 0x9a, 0x6, 0x89, 0xe0, 0x9c, 0xcc, 0xec, 0x8a, 0xb, 0x40, 0x85, 0x6f, 0xcc, 0x5, 0x24, 0x2a, 0x33, 0xfa}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x4e, 0xe, 0xba, 0x29, 0x16, 0x46, 0x38, 0x19, 0xa4, 0x5, 0x40, 0x46, 0xaf, 0x9a, 0x6, 0x89, 0xe0, 0x9c, 0xcc, 0xec, 0x8a, 0xb, 0x40, 0x85, 0x6f, 0xcc, 0x5, 0x24, 0x2a, 0x33, 0xfa}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2167,7 +2168,7 @@ func _1689931300_add_community_tokens_deployer_and_priv_levelUpSql() (*asset, er
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1689931300_add_community_tokens_deployer_and_priv_level.up.sql", size: 156, mode: os.FileMode(0664), modTime: time.Unix(1692814344, 0)}
|
info := bindataFileInfo{name: "1689931300_add_community_tokens_deployer_and_priv_level.up.sql", size: 156, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x24, 0xd9, 0x4d, 0xe, 0x4b, 0xe3, 0x4c, 0xd1, 0xc, 0x72, 0xd4, 0x99, 0xe4, 0xb9, 0xb8, 0xe9, 0x38, 0x9e, 0x11, 0x48, 0xea, 0xe3, 0x5d, 0xd9, 0xd0, 0xef, 0x96, 0x38, 0x5a, 0xd4, 0xa5}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x24, 0xd9, 0x4d, 0xe, 0x4b, 0xe3, 0x4c, 0xd1, 0xc, 0x72, 0xd4, 0x99, 0xe4, 0xb9, 0xb8, 0xe9, 0x38, 0x9e, 0x11, 0x48, 0xea, 0xe3, 0x5d, 0xd9, 0xd0, 0xef, 0x96, 0x38, 0x5a, 0xd4, 0xa5}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2187,7 +2188,7 @@ func _1693311881_add_unfurled_links_to_message_editsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1693311881_add_unfurled_links_to_message_edits.up.sql", size: 64, mode: os.FileMode(0664), modTime: time.Unix(1694098269, 0)}
|
info := bindataFileInfo{name: "1693311881_add_unfurled_links_to_message_edits.up.sql", size: 64, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0xc7, 0x7c, 0xe4, 0x80, 0x6f, 0xf8, 0x96, 0xb, 0x37, 0xff, 0xa2, 0xab, 0x1c, 0xbd, 0x25, 0x8d, 0x1e, 0x9a, 0x65, 0xe9, 0x45, 0xaf, 0x7f, 0x77, 0x84, 0x1b, 0x10, 0x1b, 0x1a, 0x5, 0xcc}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0xc7, 0x7c, 0xe4, 0x80, 0x6f, 0xf8, 0x96, 0xb, 0x37, 0xff, 0xa2, 0xab, 0x1c, 0xbd, 0x25, 0x8d, 0x1e, 0x9a, 0x65, 0xe9, 0x45, 0xaf, 0x7f, 0x77, 0x84, 0x1b, 0x10, 0x1b, 0x1a, 0x5, 0xcc}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2207,11 +2208,31 @@ func _1693311981_community_shardUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1693311981_community_shard.up.sql", size: 156, mode: os.FileMode(0664), modTime: time.Unix(1694098617, 0)}
|
info := bindataFileInfo{name: "1693311981_community_shard.up.sql", size: 156, mode: os.FileMode(0644), modTime: time.Unix(1697196255, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x12, 0xf9, 0xde, 0x49, 0x9f, 0x95, 0xaa, 0x22, 0x5e, 0x54, 0x5a, 0x1, 0xd, 0xc6, 0x1f, 0x42, 0x93, 0xe8, 0x69, 0x30, 0x11, 0x69, 0x41, 0x7f, 0x87, 0x57, 0x56, 0x2a, 0x32, 0xb9, 0x3e}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x12, 0xf9, 0xde, 0x49, 0x9f, 0x95, 0xaa, 0x22, 0x5e, 0x54, 0x5a, 0x1, 0xd, 0xc6, 0x1f, 0x42, 0x93, 0xe8, 0x69, 0x30, 0x11, 0x69, 0x41, 0x7f, 0x87, 0x57, 0x56, 0x2a, 0x32, 0xb9, 0x3e}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var __1695331492_add_status_link_previewsUpSql = []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\x2f\x2e\x49\x2c\x29\x2d\x8e\xcf\xc9\xcc\xcb\x2e\x56\x70\xf2\xf1\x77\xb2\xe6\xc2\x69\x40\x7c\x6a\x4a\x66\x09\xd1\xc6\x00\x02\x00\x00\xff\xff\x3c\xe3\x6f\xcd\x88\x00\x00\x00")
|
||||||
|
|
||||||
|
func _1695331492_add_status_link_previewsUpSqlBytes() ([]byte, error) {
|
||||||
|
return bindataRead(
|
||||||
|
__1695331492_add_status_link_previewsUpSql,
|
||||||
|
"1695331492_add_status_link_previews.up.sql",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _1695331492_add_status_link_previewsUpSql() (*asset, error) {
|
||||||
|
bytes, err := _1695331492_add_status_link_previewsUpSqlBytes()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
info := bindataFileInfo{name: "1695331492_add_status_link_previews.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1697196265, 0)}
|
||||||
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0x7d, 0x6e, 0x86, 0xf0, 0xf8, 0x23, 0x4b, 0x16, 0x3d, 0xca, 0x8f, 0xfc, 0x8, 0x22, 0xd5, 0x70, 0x14, 0xbb, 0xdd, 0xa9, 0xb8, 0x3e, 0xc6, 0x20, 0xfb, 0x0, 0x26, 0x73, 0xcb, 0x92, 0xb2}}
|
||||||
|
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")
|
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) {
|
func readmeMdBytes() ([]byte, error) {
|
||||||
|
@ -2227,7 +2248,7 @@ func readmeMd() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2247,7 +2268,7 @@ func docGo() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2547,6 +2568,8 @@ var _bindata = map[string]func() (*asset, error){
|
||||||
|
|
||||||
"1693311981_community_shard.up.sql": _1693311981_community_shardUpSql,
|
"1693311981_community_shard.up.sql": _1693311981_community_shardUpSql,
|
||||||
|
|
||||||
|
"1695331492_add_status_link_previews.up.sql": _1695331492_add_status_link_previewsUpSql,
|
||||||
|
|
||||||
"README.md": readmeMd,
|
"README.md": readmeMd,
|
||||||
|
|
||||||
"doc.go": docGo,
|
"doc.go": docGo,
|
||||||
|
@ -2695,8 +2718,9 @@ var _bintree = &bintree{nil, map[string]*bintree{
|
||||||
"1689931300_add_community_tokens_deployer_and_priv_level.up.sql": &bintree{_1689931300_add_community_tokens_deployer_and_priv_levelUpSql, map[string]*bintree{}},
|
"1689931300_add_community_tokens_deployer_and_priv_level.up.sql": &bintree{_1689931300_add_community_tokens_deployer_and_priv_levelUpSql, map[string]*bintree{}},
|
||||||
"1693311881_add_unfurled_links_to_message_edits.up.sql": &bintree{_1693311881_add_unfurled_links_to_message_editsUpSql, map[string]*bintree{}},
|
"1693311881_add_unfurled_links_to_message_edits.up.sql": &bintree{_1693311881_add_unfurled_links_to_message_editsUpSql, map[string]*bintree{}},
|
||||||
"1693311981_community_shard.up.sql": &bintree{_1693311981_community_shardUpSql, map[string]*bintree{}},
|
"1693311981_community_shard.up.sql": &bintree{_1693311981_community_shardUpSql, map[string]*bintree{}},
|
||||||
"README.md": &bintree{readmeMd, map[string]*bintree{}},
|
"1695331492_add_status_link_previews.up.sql": &bintree{_1695331492_add_status_link_previewsUpSql, map[string]*bintree{}},
|
||||||
"doc.go": &bintree{docGo, map[string]*bintree{}},
|
"README.md": &bintree{readmeMd, map[string]*bintree{}},
|
||||||
|
"doc.go": &bintree{docGo, map[string]*bintree{}},
|
||||||
}}
|
}}
|
||||||
|
|
||||||
// RestoreAsset restores an asset under the given directory.
|
// RestoreAsset restores an asset under the given directory.
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER TABLE user_messages ADD COLUMN unfurled_status_links BLOB;
|
||||||
|
ALTER TABLE user_messages_edits ADD COLUMN unfurled_status_links BLOB;
|
|
@ -70,7 +70,7 @@ func (x UnfurledLink_LinkType) String() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (UnfurledLink_LinkType) EnumDescriptor() ([]byte, []int) {
|
func (UnfurledLink_LinkType) EnumDescriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_263952f55fd35689, []int{10, 0}
|
return fileDescriptor_263952f55fd35689, []int{11, 0}
|
||||||
}
|
}
|
||||||
|
|
||||||
type ChatMessage_ContentType int32
|
type ChatMessage_ContentType int32
|
||||||
|
@ -149,7 +149,7 @@ func (x ChatMessage_ContentType) String() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ChatMessage_ContentType) EnumDescriptor() ([]byte, []int) {
|
func (ChatMessage_ContentType) EnumDescriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_263952f55fd35689, []int{11, 0}
|
return fileDescriptor_263952f55fd35689, []int{17, 0}
|
||||||
}
|
}
|
||||||
|
|
||||||
type StickerMessage struct {
|
type StickerMessage struct {
|
||||||
|
@ -345,6 +345,7 @@ type EditMessage struct {
|
||||||
MessageType MessageType `protobuf:"varint,6,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"`
|
MessageType MessageType `protobuf:"varint,6,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"`
|
||||||
ContentType ChatMessage_ContentType `protobuf:"varint,7,opt,name=content_type,json=contentType,proto3,enum=protobuf.ChatMessage_ContentType" json:"content_type,omitempty"`
|
ContentType ChatMessage_ContentType `protobuf:"varint,7,opt,name=content_type,json=contentType,proto3,enum=protobuf.ChatMessage_ContentType" json:"content_type,omitempty"`
|
||||||
UnfurledLinks []*UnfurledLink `protobuf:"bytes,8,rep,name=unfurled_links,json=unfurledLinks,proto3" json:"unfurled_links,omitempty"`
|
UnfurledLinks []*UnfurledLink `protobuf:"bytes,8,rep,name=unfurled_links,json=unfurledLinks,proto3" json:"unfurled_links,omitempty"`
|
||||||
|
UnfurledStatusLinks *UnfurledStatusLinks `protobuf:"bytes,9,opt,name=unfurled_status_links,json=unfurledStatusLinks,proto3" json:"unfurled_status_links,omitempty"`
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
@ -431,6 +432,13 @@ func (m *EditMessage) GetUnfurledLinks() []*UnfurledLink {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *EditMessage) GetUnfurledStatusLinks() *UnfurledStatusLinks {
|
||||||
|
if m != nil {
|
||||||
|
return m.UnfurledStatusLinks
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type DeleteMessage struct {
|
type DeleteMessage struct {
|
||||||
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
|
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
|
||||||
ChatId string `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"`
|
ChatId string `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"`
|
||||||
|
@ -891,6 +899,61 @@ func (m *DiscordMessageAttachment) GetLocalUrl() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type UnfurledLinkThumbnail struct {
|
||||||
|
Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
|
||||||
|
Width uint32 `protobuf:"varint,2,opt,name=width,proto3" json:"width,omitempty"`
|
||||||
|
Height uint32 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledLinkThumbnail) Reset() { *m = UnfurledLinkThumbnail{} }
|
||||||
|
func (m *UnfurledLinkThumbnail) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*UnfurledLinkThumbnail) ProtoMessage() {}
|
||||||
|
func (*UnfurledLinkThumbnail) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_263952f55fd35689, []int{10}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledLinkThumbnail) XXX_Unmarshal(b []byte) error {
|
||||||
|
return xxx_messageInfo_UnfurledLinkThumbnail.Unmarshal(m, b)
|
||||||
|
}
|
||||||
|
func (m *UnfurledLinkThumbnail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_UnfurledLinkThumbnail.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *UnfurledLinkThumbnail) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_UnfurledLinkThumbnail.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *UnfurledLinkThumbnail) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_UnfurledLinkThumbnail.Size(m)
|
||||||
|
}
|
||||||
|
func (m *UnfurledLinkThumbnail) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_UnfurledLinkThumbnail.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_UnfurledLinkThumbnail proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *UnfurledLinkThumbnail) GetPayload() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.Payload
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledLinkThumbnail) GetWidth() uint32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Width
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledLinkThumbnail) GetHeight() uint32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Height
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
type UnfurledLink struct {
|
type UnfurledLink struct {
|
||||||
// A valid URL which uniquely identifies this link.
|
// A valid URL which uniquely identifies this link.
|
||||||
Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
|
Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
|
||||||
|
@ -912,7 +975,7 @@ func (m *UnfurledLink) Reset() { *m = UnfurledLink{} }
|
||||||
func (m *UnfurledLink) String() string { return proto.CompactTextString(m) }
|
func (m *UnfurledLink) String() string { return proto.CompactTextString(m) }
|
||||||
func (*UnfurledLink) ProtoMessage() {}
|
func (*UnfurledLink) ProtoMessage() {}
|
||||||
func (*UnfurledLink) Descriptor() ([]byte, []int) {
|
func (*UnfurledLink) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_263952f55fd35689, []int{10}
|
return fileDescriptor_263952f55fd35689, []int{11}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *UnfurledLink) XXX_Unmarshal(b []byte) error {
|
func (m *UnfurledLink) XXX_Unmarshal(b []byte) error {
|
||||||
|
@ -982,6 +1045,379 @@ func (m *UnfurledLink) GetType() UnfurledLink_LinkType {
|
||||||
return UnfurledLink_LINK
|
return UnfurledLink_LINK
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type UnfurledStatusContactLink struct {
|
||||||
|
PublicKey []byte `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
|
||||||
|
DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
|
||||||
|
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
|
||||||
|
Icon *UnfurledLinkThumbnail `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusContactLink) Reset() { *m = UnfurledStatusContactLink{} }
|
||||||
|
func (m *UnfurledStatusContactLink) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*UnfurledStatusContactLink) ProtoMessage() {}
|
||||||
|
func (*UnfurledStatusContactLink) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_263952f55fd35689, []int{12}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusContactLink) XXX_Unmarshal(b []byte) error {
|
||||||
|
return xxx_messageInfo_UnfurledStatusContactLink.Unmarshal(m, b)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusContactLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_UnfurledStatusContactLink.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusContactLink) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_UnfurledStatusContactLink.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusContactLink) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_UnfurledStatusContactLink.Size(m)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusContactLink) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_UnfurledStatusContactLink.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_UnfurledStatusContactLink proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *UnfurledStatusContactLink) GetPublicKey() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.PublicKey
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusContactLink) GetDisplayName() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.DisplayName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusContactLink) GetDescription() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Description
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusContactLink) GetIcon() *UnfurledLinkThumbnail {
|
||||||
|
if m != nil {
|
||||||
|
return m.Icon
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type UnfurledStatusCommunityLink struct {
|
||||||
|
CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
|
||||||
|
DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
|
||||||
|
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
|
||||||
|
MembersCount uint32 `protobuf:"varint,4,opt,name=members_count,json=membersCount,proto3" json:"members_count,omitempty"`
|
||||||
|
Color string `protobuf:"bytes,5,opt,name=color,proto3" json:"color,omitempty"`
|
||||||
|
Icon *UnfurledLinkThumbnail `protobuf:"bytes,7,opt,name=icon,proto3" json:"icon,omitempty"`
|
||||||
|
Banner *UnfurledLinkThumbnail `protobuf:"bytes,8,opt,name=banner,proto3" json:"banner,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusCommunityLink) Reset() { *m = UnfurledStatusCommunityLink{} }
|
||||||
|
func (m *UnfurledStatusCommunityLink) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*UnfurledStatusCommunityLink) ProtoMessage() {}
|
||||||
|
func (*UnfurledStatusCommunityLink) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_263952f55fd35689, []int{13}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusCommunityLink) XXX_Unmarshal(b []byte) error {
|
||||||
|
return xxx_messageInfo_UnfurledStatusCommunityLink.Unmarshal(m, b)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusCommunityLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_UnfurledStatusCommunityLink.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusCommunityLink) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_UnfurledStatusCommunityLink.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusCommunityLink) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_UnfurledStatusCommunityLink.Size(m)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusCommunityLink) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_UnfurledStatusCommunityLink.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_UnfurledStatusCommunityLink proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *UnfurledStatusCommunityLink) GetCommunityId() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.CommunityId
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusCommunityLink) GetDisplayName() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.DisplayName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusCommunityLink) GetDescription() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Description
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusCommunityLink) GetMembersCount() uint32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.MembersCount
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusCommunityLink) GetColor() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Color
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusCommunityLink) GetIcon() *UnfurledLinkThumbnail {
|
||||||
|
if m != nil {
|
||||||
|
return m.Icon
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusCommunityLink) GetBanner() *UnfurledLinkThumbnail {
|
||||||
|
if m != nil {
|
||||||
|
return m.Banner
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type UnfurledStatusChannelLink struct {
|
||||||
|
ChannelUuid []byte `protobuf:"bytes,1,opt,name=channel_uuid,json=channelUuid,proto3" json:"channel_uuid,omitempty"`
|
||||||
|
Emoji string `protobuf:"bytes,2,opt,name=emoji,proto3" json:"emoji,omitempty"`
|
||||||
|
DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
|
||||||
|
Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
|
||||||
|
Color string `protobuf:"bytes,5,opt,name=color,proto3" json:"color,omitempty"`
|
||||||
|
Community *UnfurledStatusCommunityLink `protobuf:"bytes,6,opt,name=community,proto3" json:"community,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusChannelLink) Reset() { *m = UnfurledStatusChannelLink{} }
|
||||||
|
func (m *UnfurledStatusChannelLink) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*UnfurledStatusChannelLink) ProtoMessage() {}
|
||||||
|
func (*UnfurledStatusChannelLink) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_263952f55fd35689, []int{14}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusChannelLink) XXX_Unmarshal(b []byte) error {
|
||||||
|
return xxx_messageInfo_UnfurledStatusChannelLink.Unmarshal(m, b)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusChannelLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_UnfurledStatusChannelLink.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusChannelLink) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_UnfurledStatusChannelLink.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusChannelLink) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_UnfurledStatusChannelLink.Size(m)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusChannelLink) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_UnfurledStatusChannelLink.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_UnfurledStatusChannelLink proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *UnfurledStatusChannelLink) GetChannelUuid() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.ChannelUuid
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusChannelLink) GetEmoji() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Emoji
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusChannelLink) GetDisplayName() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.DisplayName
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusChannelLink) GetDescription() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Description
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusChannelLink) GetColor() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Color
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusChannelLink) GetCommunity() *UnfurledStatusCommunityLink {
|
||||||
|
if m != nil {
|
||||||
|
return m.Community
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type UnfurledStatusLink struct {
|
||||||
|
Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
|
||||||
|
// Types that are valid to be assigned to Payload:
|
||||||
|
//
|
||||||
|
// *UnfurledStatusLink_Contact
|
||||||
|
// *UnfurledStatusLink_Community
|
||||||
|
// *UnfurledStatusLink_Channel
|
||||||
|
Payload isUnfurledStatusLink_Payload `protobuf_oneof:"payload"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusLink) Reset() { *m = UnfurledStatusLink{} }
|
||||||
|
func (m *UnfurledStatusLink) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*UnfurledStatusLink) ProtoMessage() {}
|
||||||
|
func (*UnfurledStatusLink) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_263952f55fd35689, []int{15}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusLink) XXX_Unmarshal(b []byte) error {
|
||||||
|
return xxx_messageInfo_UnfurledStatusLink.Unmarshal(m, b)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_UnfurledStatusLink.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusLink) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_UnfurledStatusLink.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusLink) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_UnfurledStatusLink.Size(m)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusLink) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_UnfurledStatusLink.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_UnfurledStatusLink proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *UnfurledStatusLink) GetUrl() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Url
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type isUnfurledStatusLink_Payload interface {
|
||||||
|
isUnfurledStatusLink_Payload()
|
||||||
|
}
|
||||||
|
|
||||||
|
type UnfurledStatusLink_Contact struct {
|
||||||
|
Contact *UnfurledStatusContactLink `protobuf:"bytes,2,opt,name=contact,proto3,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type UnfurledStatusLink_Community struct {
|
||||||
|
Community *UnfurledStatusCommunityLink `protobuf:"bytes,3,opt,name=community,proto3,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type UnfurledStatusLink_Channel struct {
|
||||||
|
Channel *UnfurledStatusChannelLink `protobuf:"bytes,4,opt,name=channel,proto3,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*UnfurledStatusLink_Contact) isUnfurledStatusLink_Payload() {}
|
||||||
|
|
||||||
|
func (*UnfurledStatusLink_Community) isUnfurledStatusLink_Payload() {}
|
||||||
|
|
||||||
|
func (*UnfurledStatusLink_Channel) isUnfurledStatusLink_Payload() {}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusLink) GetPayload() isUnfurledStatusLink_Payload {
|
||||||
|
if m != nil {
|
||||||
|
return m.Payload
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusLink) GetContact() *UnfurledStatusContactLink {
|
||||||
|
if x, ok := m.GetPayload().(*UnfurledStatusLink_Contact); ok {
|
||||||
|
return x.Contact
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusLink) GetCommunity() *UnfurledStatusCommunityLink {
|
||||||
|
if x, ok := m.GetPayload().(*UnfurledStatusLink_Community); ok {
|
||||||
|
return x.Community
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusLink) GetChannel() *UnfurledStatusChannelLink {
|
||||||
|
if x, ok := m.GetPayload().(*UnfurledStatusLink_Channel); ok {
|
||||||
|
return x.Channel
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// XXX_OneofWrappers is for the internal use of the proto package.
|
||||||
|
func (*UnfurledStatusLink) XXX_OneofWrappers() []interface{} {
|
||||||
|
return []interface{}{
|
||||||
|
(*UnfurledStatusLink_Contact)(nil),
|
||||||
|
(*UnfurledStatusLink_Community)(nil),
|
||||||
|
(*UnfurledStatusLink_Channel)(nil),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a wrapper around repeated property for proper unmarshalling
|
||||||
|
type UnfurledStatusLinks struct {
|
||||||
|
UnfurledStatusLinks []*UnfurledStatusLink `protobuf:"bytes,1,rep,name=unfurled_status_links,json=unfurledStatusLinks,proto3" json:"unfurled_status_links,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusLinks) Reset() { *m = UnfurledStatusLinks{} }
|
||||||
|
func (m *UnfurledStatusLinks) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*UnfurledStatusLinks) ProtoMessage() {}
|
||||||
|
func (*UnfurledStatusLinks) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_263952f55fd35689, []int{16}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnfurledStatusLinks) XXX_Unmarshal(b []byte) error {
|
||||||
|
return xxx_messageInfo_UnfurledStatusLinks.Unmarshal(m, b)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusLinks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_UnfurledStatusLinks.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusLinks) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_UnfurledStatusLinks.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusLinks) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_UnfurledStatusLinks.Size(m)
|
||||||
|
}
|
||||||
|
func (m *UnfurledStatusLinks) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_UnfurledStatusLinks.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_UnfurledStatusLinks proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *UnfurledStatusLinks) GetUnfurledStatusLinks() []*UnfurledStatusLink {
|
||||||
|
if m != nil {
|
||||||
|
return m.UnfurledStatusLinks
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type ChatMessage struct {
|
type ChatMessage struct {
|
||||||
// Lamport timestamp of the chat message
|
// Lamport timestamp of the chat message
|
||||||
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
|
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
|
||||||
|
@ -1019,6 +1455,7 @@ type ChatMessage struct {
|
||||||
ContactRequestPropagatedState *ContactRequestPropagatedState `protobuf:"bytes,15,opt,name=contact_request_propagated_state,json=contactRequestPropagatedState,proto3" json:"contact_request_propagated_state,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"`
|
UnfurledLinks []*UnfurledLink `protobuf:"bytes,16,rep,name=unfurled_links,json=unfurledLinks,proto3" json:"unfurled_links,omitempty"`
|
||||||
Shard *Shard `protobuf:"bytes,17,opt,name=shard,proto3" json:"shard,omitempty"`
|
Shard *Shard `protobuf:"bytes,17,opt,name=shard,proto3" json:"shard,omitempty"`
|
||||||
|
UnfurledStatusLinks *UnfurledStatusLinks `protobuf:"bytes,18,opt,name=unfurled_status_links,json=unfurledStatusLinks,proto3" json:"unfurled_status_links,omitempty"`
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
@ -1028,7 +1465,7 @@ func (m *ChatMessage) Reset() { *m = ChatMessage{} }
|
||||||
func (m *ChatMessage) String() string { return proto.CompactTextString(m) }
|
func (m *ChatMessage) String() string { return proto.CompactTextString(m) }
|
||||||
func (*ChatMessage) ProtoMessage() {}
|
func (*ChatMessage) ProtoMessage() {}
|
||||||
func (*ChatMessage) Descriptor() ([]byte, []int) {
|
func (*ChatMessage) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_263952f55fd35689, []int{11}
|
return fileDescriptor_263952f55fd35689, []int{17}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *ChatMessage) XXX_Unmarshal(b []byte) error {
|
func (m *ChatMessage) XXX_Unmarshal(b []byte) error {
|
||||||
|
@ -1216,6 +1653,13 @@ func (m *ChatMessage) GetShard() *Shard {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *ChatMessage) GetUnfurledStatusLinks() *UnfurledStatusLinks {
|
||||||
|
if m != nil {
|
||||||
|
return m.UnfurledStatusLinks
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// XXX_OneofWrappers is for the internal use of the proto package.
|
// XXX_OneofWrappers is for the internal use of the proto package.
|
||||||
func (*ChatMessage) XXX_OneofWrappers() []interface{} {
|
func (*ChatMessage) XXX_OneofWrappers() []interface{} {
|
||||||
return []interface{}{
|
return []interface{}{
|
||||||
|
@ -1241,7 +1685,13 @@ func init() {
|
||||||
proto.RegisterType((*DiscordMessageAuthor)(nil), "protobuf.DiscordMessageAuthor")
|
proto.RegisterType((*DiscordMessageAuthor)(nil), "protobuf.DiscordMessageAuthor")
|
||||||
proto.RegisterType((*DiscordMessageReference)(nil), "protobuf.DiscordMessageReference")
|
proto.RegisterType((*DiscordMessageReference)(nil), "protobuf.DiscordMessageReference")
|
||||||
proto.RegisterType((*DiscordMessageAttachment)(nil), "protobuf.DiscordMessageAttachment")
|
proto.RegisterType((*DiscordMessageAttachment)(nil), "protobuf.DiscordMessageAttachment")
|
||||||
|
proto.RegisterType((*UnfurledLinkThumbnail)(nil), "protobuf.UnfurledLinkThumbnail")
|
||||||
proto.RegisterType((*UnfurledLink)(nil), "protobuf.UnfurledLink")
|
proto.RegisterType((*UnfurledLink)(nil), "protobuf.UnfurledLink")
|
||||||
|
proto.RegisterType((*UnfurledStatusContactLink)(nil), "protobuf.UnfurledStatusContactLink")
|
||||||
|
proto.RegisterType((*UnfurledStatusCommunityLink)(nil), "protobuf.UnfurledStatusCommunityLink")
|
||||||
|
proto.RegisterType((*UnfurledStatusChannelLink)(nil), "protobuf.UnfurledStatusChannelLink")
|
||||||
|
proto.RegisterType((*UnfurledStatusLink)(nil), "protobuf.UnfurledStatusLink")
|
||||||
|
proto.RegisterType((*UnfurledStatusLinks)(nil), "protobuf.UnfurledStatusLinks")
|
||||||
proto.RegisterType((*ChatMessage)(nil), "protobuf.ChatMessage")
|
proto.RegisterType((*ChatMessage)(nil), "protobuf.ChatMessage")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1250,101 +1700,120 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor_263952f55fd35689 = []byte{
|
var fileDescriptor_263952f55fd35689 = []byte{
|
||||||
// 1523 bytes of a gzipped FileDescriptorProto
|
// 1840 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4f, 0x73, 0xe3, 0x4a,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xdd, 0x92, 0xdb, 0x58,
|
||||||
0x11, 0x8f, 0xff, 0x5b, 0x2d, 0xdb, 0xd1, 0xce, 0xe6, 0x65, 0xf5, 0xb6, 0x5e, 0x5e, 0xbc, 0x66,
|
0x11, 0x1e, 0xff, 0x8f, 0x5a, 0xb6, 0x47, 0x39, 0x33, 0x99, 0x38, 0x21, 0xb3, 0x71, 0x94, 0x6c,
|
||||||
0xa9, 0x0d, 0x05, 0x65, 0xaa, 0xf6, 0x3d, 0xa8, 0x57, 0x45, 0x51, 0x94, 0x62, 0xeb, 0x25, 0x62,
|
0x65, 0x28, 0xa8, 0xa1, 0x6a, 0xb2, 0xc0, 0x56, 0x51, 0xd4, 0x96, 0x62, 0x6b, 0x13, 0x91, 0xd8,
|
||||||
0xe3, 0x3f, 0x8c, 0xe5, 0x3c, 0xc2, 0x45, 0xa5, 0x48, 0x93, 0x58, 0x15, 0x59, 0x32, 0xd2, 0x18,
|
0xe3, 0x95, 0xe5, 0x2c, 0xe1, 0x46, 0xa5, 0x91, 0x4e, 0xc6, 0x62, 0xf4, 0x63, 0xf4, 0x03, 0x98,
|
||||||
0x30, 0x27, 0xbe, 0x11, 0x37, 0x4e, 0x1c, 0x39, 0x70, 0xe0, 0xca, 0x57, 0xe0, 0x13, 0xf0, 0x01,
|
0x17, 0xe1, 0x2d, 0xe0, 0x86, 0xe2, 0x8a, 0x07, 0xe0, 0x82, 0x3b, 0x8a, 0x57, 0xe0, 0x09, 0xb8,
|
||||||
0xa8, 0x99, 0xd1, 0x5f, 0x93, 0x64, 0x61, 0x2f, 0xc9, 0x74, 0x4f, 0x77, 0xab, 0xe7, 0x37, 0x3d,
|
0xe2, 0x8a, 0x3a, 0x3f, 0xfa, 0xf3, 0xd8, 0x93, 0x4d, 0x8a, 0x2b, 0xab, 0xfb, 0x74, 0x9f, 0xd3,
|
||||||
0xfd, 0x6b, 0x03, 0x72, 0x56, 0x36, 0xb5, 0xd6, 0x24, 0x8e, 0xed, 0x7b, 0x32, 0xdc, 0x44, 0x21,
|
0xfd, 0x75, 0x9f, 0x3e, 0xdd, 0x06, 0x64, 0x2f, 0xad, 0xc4, 0xf4, 0x71, 0x1c, 0x5b, 0x57, 0xf8,
|
||||||
0x0d, 0x51, 0x9b, 0xff, 0xbb, 0xdd, 0xde, 0xbd, 0x96, 0x49, 0xb0, 0x5d, 0xc7, 0x42, 0xfd, 0xba,
|
0x6c, 0x15, 0x85, 0x49, 0x88, 0xf6, 0xe9, 0xcf, 0x65, 0xfa, 0xfe, 0x81, 0x88, 0x83, 0xd4, 0x8f,
|
||||||
0xeb, 0x84, 0x01, 0xb5, 0x1d, 0x9a, 0x88, 0x72, 0xbc, 0xb2, 0x23, 0x57, 0x08, 0x83, 0x6f, 0xa0,
|
0x19, 0xfb, 0x41, 0xcf, 0x0e, 0x83, 0xc4, 0xb2, 0x13, 0x4e, 0x8a, 0xf1, 0xd2, 0x8a, 0x1c, 0x46,
|
||||||
0xb7, 0xa0, 0x9e, 0xf3, 0x40, 0xa2, 0x89, 0x08, 0x85, 0x10, 0xd4, 0x57, 0x76, 0xbc, 0x52, 0x2b,
|
0xc8, 0x5f, 0x42, 0x7f, 0x9e, 0xb8, 0xf6, 0x35, 0x8e, 0x26, 0x6c, 0x2b, 0x84, 0xa0, 0xb9, 0xb4,
|
||||||
0xfd, 0xca, 0x99, 0x84, 0xf9, 0x9a, 0xe9, 0x36, 0xb6, 0xf3, 0xa0, 0x56, 0xfb, 0x95, 0xb3, 0x06,
|
0xe2, 0xe5, 0xa0, 0x36, 0xac, 0x9d, 0x0a, 0x3a, 0xfd, 0x26, 0xbc, 0x95, 0x65, 0x5f, 0x0f, 0xea,
|
||||||
0xe6, 0xeb, 0xc1, 0xdf, 0x2b, 0xd0, 0x31, 0xd6, 0xf6, 0x3d, 0x49, 0x1d, 0x55, 0x68, 0x6d, 0xec,
|
0xc3, 0xda, 0x69, 0x4b, 0xa7, 0xdf, 0xf2, 0xdf, 0x6b, 0xd0, 0xd5, 0x7c, 0xeb, 0x0a, 0x67, 0x8a,
|
||||||
0x9d, 0x1f, 0xda, 0x2e, 0xf7, 0xed, 0xe0, 0x54, 0x44, 0xef, 0xa0, 0x4e, 0x77, 0x1b, 0xc2, 0xdd,
|
0x03, 0xe8, 0xac, 0xac, 0xb5, 0x17, 0x5a, 0x0e, 0xd5, 0xed, 0xea, 0x19, 0x89, 0x9e, 0x41, 0x33,
|
||||||
0x7b, 0xef, 0x5f, 0x0e, 0xd3, 0x34, 0x87, 0xdc, 0xdf, 0xdc, 0x6d, 0x08, 0xe6, 0x06, 0xe8, 0x73,
|
0x59, 0xaf, 0x30, 0x55, 0xef, 0x9f, 0x1f, 0x9e, 0x65, 0x66, 0x9e, 0x51, 0x7d, 0x63, 0xbd, 0xc2,
|
||||||
0x68, 0xdb, 0xfe, 0xed, 0x76, 0x6d, 0x79, 0xae, 0x5a, 0xe3, 0xdf, 0x6f, 0x71, 0xd9, 0x70, 0xd1,
|
0x3a, 0x15, 0x40, 0xf7, 0x61, 0xdf, 0xf2, 0x2e, 0x53, 0xdf, 0x74, 0x9d, 0x41, 0x83, 0x9e, 0xdf,
|
||||||
0x11, 0x34, 0x7e, 0xef, 0xb9, 0x74, 0xa5, 0xd6, 0xfb, 0x95, 0xb3, 0x2e, 0x16, 0x02, 0x3a, 0x86,
|
0xa1, 0xb4, 0xe6, 0xa0, 0x23, 0x68, 0xfd, 0xce, 0x75, 0x92, 0xe5, 0xa0, 0x39, 0xac, 0x9d, 0xf6,
|
||||||
0xe6, 0x8a, 0x78, 0xf7, 0x2b, 0xaa, 0x36, 0xb8, 0x3a, 0x91, 0xd0, 0x8f, 0x00, 0x25, 0x81, 0xd8,
|
0x74, 0x46, 0xa0, 0x63, 0x68, 0x2f, 0xb1, 0x7b, 0xb5, 0x4c, 0x06, 0x2d, 0xca, 0xe6, 0x14, 0xfa,
|
||||||
0x17, 0x62, 0xcb, 0x09, 0xb7, 0x01, 0x55, 0x9b, 0xdc, 0x46, 0x11, 0x21, 0xf9, 0xc6, 0x88, 0xe9,
|
0x21, 0x20, 0xbe, 0x11, 0x39, 0x21, 0x36, 0xed, 0x30, 0x0d, 0x92, 0x41, 0x9b, 0xca, 0x48, 0x6c,
|
||||||
0x07, 0x7f, 0xa9, 0x40, 0x47, 0xdb, 0xba, 0x5e, 0xf8, 0xf1, 0xa3, 0x7c, 0x5d, 0x3a, 0x4a, 0x3f,
|
0x4b, 0xba, 0x30, 0x22, 0x7c, 0xf9, 0xaf, 0x35, 0xe8, 0x2a, 0xa9, 0xe3, 0x86, 0x1f, 0x76, 0xe5,
|
||||||
0x3f, 0x4a, 0xd1, 0x5f, 0x08, 0x85, 0x73, 0x9d, 0x82, 0xec, 0x6e, 0x23, 0x9b, 0x7a, 0x61, 0x60,
|
0x8b, 0x8a, 0x2b, 0xc3, 0xc2, 0x95, 0xb2, 0x3e, 0x23, 0x4a, 0x7e, 0x3d, 0x02, 0xd1, 0x49, 0x23,
|
||||||
0xad, 0x63, 0x7e, 0xb4, 0x3a, 0x86, 0x54, 0x35, 0x89, 0x07, 0x3f, 0x01, 0x29, 0xf3, 0x41, 0xc7,
|
0x2b, 0x71, 0xc3, 0xc0, 0xf4, 0x63, 0xea, 0x5a, 0x53, 0x87, 0x8c, 0x35, 0x89, 0xe5, 0x1f, 0x83,
|
||||||
0x80, 0x96, 0xd3, 0x0f, 0xd3, 0xd9, 0x77, 0x53, 0x4b, 0x5b, 0x8e, 0x8d, 0x99, 0x65, 0xde, 0xcc,
|
0x90, 0xeb, 0xa0, 0x63, 0x40, 0x8b, 0xe9, 0xeb, 0xe9, 0xc5, 0xb7, 0x53, 0x53, 0x59, 0x8c, 0xb5,
|
||||||
0x75, 0xe5, 0x00, 0xb5, 0xa0, 0xa6, 0x69, 0x23, 0xa5, 0xc2, 0x17, 0x13, 0xac, 0x54, 0x07, 0x7f,
|
0x0b, 0xd3, 0x78, 0x37, 0x53, 0xa5, 0x3d, 0xd4, 0x81, 0x86, 0xa2, 0x8c, 0xa4, 0x1a, 0xfd, 0x98,
|
||||||
0xab, 0x82, 0xac, 0xbb, 0x1e, 0x4d, 0xf3, 0x3e, 0x82, 0x86, 0xe3, 0x87, 0xce, 0x03, 0xcf, 0xba,
|
0xe8, 0x52, 0x5d, 0xfe, 0x63, 0x03, 0x44, 0xd5, 0x71, 0x93, 0xcc, 0xee, 0x23, 0x68, 0xd9, 0x5e,
|
||||||
0x8e, 0x85, 0xc0, 0x6e, 0x8f, 0x92, 0x3f, 0x50, 0x9e, 0xb3, 0x84, 0xf9, 0x1a, 0xbd, 0x82, 0x16,
|
0x68, 0x5f, 0x53, 0xab, 0x9b, 0x3a, 0x23, 0x48, 0xf4, 0x12, 0xfc, 0xfb, 0x84, 0xda, 0x2c, 0xe8,
|
||||||
0x2f, 0xa0, 0x0c, 0xe8, 0x26, 0x13, 0x0d, 0x17, 0x9d, 0x00, 0x24, 0x45, 0xc5, 0xf6, 0xea, 0x7c,
|
0xf4, 0x1b, 0xdd, 0x83, 0x0e, 0x4d, 0xa0, 0x1c, 0xe8, 0x36, 0x21, 0x35, 0x07, 0x9d, 0x00, 0xf0,
|
||||||
0x4f, 0x4a, 0x34, 0xe2, 0x1a, 0xee, 0x23, 0x3b, 0x10, 0x78, 0x77, 0xb0, 0x10, 0xd0, 0x37, 0xd0,
|
0xa4, 0x22, 0x6b, 0x4d, 0xba, 0x26, 0x70, 0x0e, 0x0b, 0xc3, 0x55, 0x64, 0x05, 0x0c, 0xef, 0xae,
|
||||||
0x49, 0x9d, 0x38, 0x3a, 0x4d, 0x8e, 0xce, 0x67, 0x39, 0x3a, 0x49, 0x82, 0x1c, 0x12, 0x79, 0x9d,
|
0xce, 0x08, 0xf4, 0x25, 0x74, 0x33, 0x25, 0x8a, 0x4e, 0x9b, 0xa2, 0x73, 0xb7, 0x40, 0x87, 0x1b,
|
||||||
0x0b, 0x68, 0x0c, 0x1d, 0x56, 0x9d, 0x24, 0xa0, 0xc2, 0xb3, 0xc5, 0x3d, 0xdf, 0xe4, 0x9e, 0xa3,
|
0x48, 0x21, 0x11, 0xfd, 0x82, 0x40, 0x63, 0xe8, 0x92, 0xec, 0xc4, 0x41, 0xc2, 0x34, 0x3b, 0x54,
|
||||||
0x95, 0x9d, 0x1e, 0x6f, 0x38, 0x12, 0x96, 0x22, 0x8a, 0x93, 0x0b, 0xe8, 0xe7, 0xd0, 0xdb, 0x06,
|
0xf3, 0x71, 0xa1, 0x39, 0x5a, 0x5a, 0x99, 0x7b, 0x67, 0x23, 0x26, 0xc9, 0x76, 0xb1, 0x0b, 0x02,
|
||||||
0x77, 0xdb, 0xc8, 0x27, 0xae, 0xe5, 0x7b, 0xc1, 0x43, 0xac, 0xb6, 0xfb, 0xb5, 0x33, 0xf9, 0xfd,
|
0xfd, 0x1c, 0xfa, 0x69, 0xf0, 0x3e, 0x8d, 0x3c, 0xec, 0x98, 0x9e, 0x1b, 0x5c, 0xc7, 0x83, 0xfd,
|
||||||
0x71, 0x1e, 0x67, 0x99, 0xec, 0x5f, 0x79, 0xc1, 0x03, 0xee, 0x6e, 0x0b, 0x52, 0x3c, 0xf8, 0x47,
|
0x61, 0xe3, 0x54, 0x3c, 0x3f, 0x2e, 0xf6, 0x59, 0xf0, 0xf5, 0x37, 0x6e, 0x70, 0xad, 0xf7, 0xd2,
|
||||||
0x05, 0xba, 0x63, 0xe2, 0x13, 0x4a, 0x9e, 0x07, 0xb2, 0x00, 0x5a, 0xf5, 0x19, 0xd0, 0x6a, 0x4f,
|
0x12, 0x15, 0xa3, 0x6f, 0xe0, 0x6e, 0xae, 0x1e, 0x27, 0x56, 0x92, 0xc6, 0x7c, 0x17, 0x61, 0x58,
|
||||||
0x82, 0x56, 0x7f, 0x0e, 0xb4, 0xc6, 0xff, 0x0c, 0xda, 0x09, 0x80, 0xcb, 0xd3, 0x75, 0xad, 0xdb,
|
0x3b, 0x15, 0xcf, 0x4f, 0x6e, 0xee, 0x32, 0xa7, 0x52, 0x54, 0x5b, 0x3f, 0x4c, 0x6f, 0x32, 0xe5,
|
||||||
0x1d, 0x07, 0x5b, 0xc2, 0x52, 0xa2, 0x39, 0xdf, 0x0d, 0x26, 0x70, 0xbc, 0xd8, 0x05, 0x8e, 0x38,
|
0x7f, 0xd4, 0xa0, 0x37, 0xc6, 0x1e, 0x4e, 0xf0, 0xed, 0xb1, 0x29, 0xc5, 0xa1, 0x7e, 0x4b, 0x1c,
|
||||||
0xd1, 0xb7, 0x61, 0x34, 0xf9, 0xc8, 0xb1, 0xca, 0xd9, 0x57, 0xf7, 0xb2, 0x1f, 0xfc, 0xb3, 0x0a,
|
0x1a, 0x3b, 0xe3, 0xd0, 0xbc, 0x2d, 0x0e, 0xad, 0xef, 0x1c, 0x87, 0x13, 0x00, 0x87, 0x9a, 0xeb,
|
||||||
0xbd, 0xb1, 0x17, 0x3b, 0x61, 0xe4, 0xa6, 0x71, 0x7a, 0x50, 0xf5, 0xdc, 0xa4, 0x43, 0x54, 0x3d,
|
0x98, 0x97, 0x6b, 0x1a, 0x3f, 0x41, 0x17, 0x38, 0xe7, 0xc5, 0x5a, 0x9e, 0xc0, 0xf1, 0x7c, 0x1d,
|
||||||
0x97, 0x57, 0x58, 0xfa, 0x2a, 0xa4, 0xa4, 0xe6, 0xbf, 0x00, 0x89, 0x7a, 0x6b, 0x12, 0x53, 0x7b,
|
0xd8, 0xcc, 0xa3, 0xaf, 0xc3, 0x68, 0xf2, 0x01, 0xb7, 0xaa, 0xd6, 0xd7, 0x37, 0xac, 0x97, 0xff,
|
||||||
0xbd, 0x49, 0x21, 0xc9, 0x14, 0xe8, 0x0c, 0x0e, 0x33, 0x81, 0x55, 0x30, 0x49, 0x6b, 0x6d, 0x5f,
|
0x55, 0x87, 0xfe, 0xd8, 0x8d, 0xed, 0x30, 0x72, 0xb2, 0x7d, 0xfa, 0x50, 0x77, 0x1d, 0x5e, 0x74,
|
||||||
0xcd, 0xde, 0x62, 0x72, 0xd5, 0x1c, 0x21, 0x09, 0xa7, 0x22, 0xfa, 0x29, 0x34, 0xed, 0x2d, 0x5d,
|
0xea, 0xae, 0x43, 0x93, 0x36, 0xbb, 0x68, 0x02, 0xbf, 0x46, 0x0f, 0x41, 0x48, 0x5c, 0x1f, 0xc7,
|
||||||
0x85, 0x11, 0x87, 0x40, 0x7e, 0xff, 0x65, 0x0e, 0x5d, 0x39, 0x5f, 0x8d, 0x5b, 0xe1, 0xc4, 0x1a,
|
0x89, 0xe5, 0xaf, 0x32, 0x48, 0x72, 0x06, 0x3a, 0x85, 0x83, 0x9c, 0x20, 0x97, 0x02, 0x67, 0xe9,
|
||||||
0xfd, 0x02, 0xa4, 0x88, 0xdc, 0x91, 0x88, 0x04, 0x8e, 0x28, 0x38, 0xb9, 0x58, 0x70, 0x65, 0x57,
|
0xbb, 0xc9, 0x26, 0xd7, 0x9b, 0x67, 0x0f, 0x45, 0x48, 0xd0, 0x33, 0x12, 0xfd, 0x04, 0xda, 0x56,
|
||||||
0x9c, 0x1a, 0xe2, 0xdc, 0x07, 0x8d, 0x41, 0xb6, 0x29, 0xb5, 0x9d, 0xd5, 0x9a, 0x04, 0x34, 0xad,
|
0x9a, 0x2c, 0xc3, 0x88, 0x42, 0x20, 0x9e, 0x7f, 0x56, 0x40, 0x57, 0xb5, 0x57, 0xa1, 0x52, 0x3a,
|
||||||
0xb5, 0xc1, 0x93, 0x5f, 0xcf, 0x4c, 0x71, 0xd1, 0x6d, 0xf0, 0xaf, 0x0a, 0x1c, 0x3d, 0x96, 0xe7,
|
0x97, 0x46, 0x5f, 0x81, 0x10, 0xe1, 0xf7, 0x38, 0xc2, 0x81, 0xcd, 0x72, 0x58, 0x2c, 0xe7, 0x70,
|
||||||
0x63, 0xe8, 0x06, 0xf6, 0x3a, 0x43, 0x97, 0xad, 0xd1, 0x5b, 0xe8, 0xba, 0x5e, 0xec, 0x44, 0xde,
|
0x55, 0x55, 0xcf, 0x04, 0xf5, 0x42, 0x07, 0x8d, 0x41, 0xb4, 0x92, 0xc4, 0xb2, 0x97, 0x3e, 0x0e,
|
||||||
0xda, 0x0b, 0x6c, 0x1a, 0x46, 0x09, 0xc2, 0x65, 0x25, 0x7a, 0x0d, 0xed, 0xc0, 0x73, 0x1e, 0xb8,
|
0x92, 0x2c, 0x7d, 0xe5, 0x9d, 0xa7, 0xe7, 0xa2, 0x7a, 0x59, 0x4d, 0xfe, 0x77, 0x0d, 0x8e, 0xb6,
|
||||||
0xb7, 0x80, 0x37, 0x93, 0xd9, 0xfd, 0xd8, 0xbf, 0xb3, 0xa9, 0x1d, 0x2d, 0x23, 0x3f, 0x41, 0x36,
|
0xd9, 0xb9, 0x0d, 0xdd, 0xc0, 0xf2, 0x73, 0x74, 0xc9, 0x37, 0x7a, 0x0a, 0x3d, 0xc7, 0x8d, 0xed,
|
||||||
0x57, 0xa0, 0x21, 0x20, 0x21, 0xf0, 0x3e, 0x39, 0x4f, 0x9a, 0x61, 0x93, 0xd7, 0xef, 0x23, 0x3b,
|
0xc8, 0xf5, 0xdd, 0xc0, 0x4a, 0xc2, 0x88, 0x23, 0x5c, 0x65, 0xa2, 0x07, 0xb0, 0x1f, 0xb8, 0xf6,
|
||||||
0xec, 0x4b, 0x7e, 0xe8, 0xd8, 0x3e, 0x0b, 0xd6, 0x12, 0x5f, 0x4a, 0xe5, 0x41, 0x08, 0xaf, 0x9e,
|
0x35, 0xd5, 0x66, 0xf0, 0xe6, 0x34, 0x89, 0x8f, 0xf5, 0x5b, 0x2b, 0xb1, 0xa2, 0x45, 0xe4, 0x71,
|
||||||
0x00, 0x95, 0x25, 0x91, 0x15, 0x5a, 0x72, 0xe2, 0xc2, 0xbb, 0xf9, 0x02, 0x24, 0x67, 0x65, 0x07,
|
0x64, 0x0b, 0x06, 0x3a, 0x03, 0xc4, 0x08, 0x5a, 0x7a, 0x67, 0xbc, 0xbe, 0xb6, 0x69, 0xfe, 0x6e,
|
||||||
0x01, 0xf1, 0x8d, 0xac, 0x2e, 0x33, 0x05, 0x2b, 0x8c, 0xfb, 0xad, 0xe7, 0xbb, 0x46, 0xc6, 0x15,
|
0x59, 0x21, 0x27, 0x79, 0xa1, 0x6d, 0x79, 0x64, 0xb3, 0x0e, 0x3b, 0x29, 0xa3, 0xe5, 0x10, 0xee,
|
||||||
0x89, 0x38, 0xf8, 0x77, 0x05, 0xd4, 0xa7, 0xee, 0xe0, 0xbf, 0xd0, 0x2d, 0xa5, 0xb0, 0x5f, 0xfc,
|
0xed, 0x00, 0x95, 0x18, 0x91, 0x27, 0x1a, 0xf7, 0xb8, 0x74, 0x6f, 0x1e, 0x82, 0x60, 0x2f, 0xad,
|
||||||
0x48, 0x81, 0xda, 0x36, 0xf2, 0x93, 0x0f, 0xb0, 0x25, 0x3b, 0xe9, 0x9d, 0xe7, 0x93, 0x69, 0x01,
|
0x20, 0xc0, 0x9e, 0x96, 0xe7, 0x65, 0xce, 0x20, 0x89, 0x71, 0x95, 0xba, 0x9e, 0xa3, 0xe5, 0xcf,
|
||||||
0xd3, 0x54, 0x66, 0xb7, 0xc2, 0xd6, 0x0b, 0xef, 0x8f, 0xe4, 0x7c, 0x47, 0x49, 0xcc, 0x71, 0xad,
|
0x0f, 0x27, 0xe5, 0xff, 0xd4, 0x60, 0xb0, 0x2b, 0x06, 0x37, 0xd0, 0xad, 0x98, 0xb0, 0x99, 0xfc,
|
||||||
0xe3, 0xb2, 0x12, 0xf5, 0xa1, 0xd8, 0xbc, 0x92, 0xf7, 0x5b, 0xea, 0x67, 0x05, 0xfe, 0x69, 0x95,
|
0x48, 0x82, 0x46, 0x1a, 0x79, 0xfc, 0x00, 0xf2, 0x49, 0x3c, 0x7d, 0xef, 0x7a, 0x78, 0x5a, 0xc2,
|
||||||
0xf9, 0xa7, 0x88, 0x73, 0x7b, 0x0f, 0xe7, 0x3f, 0x57, 0xa1, 0x53, 0x6c, 0x73, 0x69, 0xf2, 0x95,
|
0x34, 0xa3, 0x49, 0x54, 0xc8, 0xf7, 0xdc, 0xfd, 0x03, 0x7e, 0xb1, 0x4e, 0x70, 0x4c, 0x71, 0x6d,
|
||||||
0x3c, 0xf9, 0x23, 0x68, 0x50, 0x8f, 0xfa, 0x69, 0x2d, 0x09, 0x81, 0x25, 0xe4, 0x12, 0x56, 0x37,
|
0xea, 0x55, 0x26, 0x1a, 0x42, 0xb9, 0x1e, 0xf2, 0xfb, 0x5b, 0x29, 0x91, 0xa5, 0x27, 0xad, 0x53,
|
||||||
0x1b, 0x46, 0x47, 0xc9, 0x61, 0x8b, 0x2a, 0xf4, 0x43, 0x78, 0x41, 0x57, 0xdb, 0xf5, 0x6d, 0x60,
|
0x7d, 0xd2, 0xca, 0x38, 0xef, 0x6f, 0xe0, 0x6c, 0xc2, 0xdd, 0x72, 0xe1, 0x34, 0x96, 0xa9, 0x7f,
|
||||||
0x7b, 0xbe, 0x95, 0xa6, 0x26, 0xba, 0x99, 0x92, 0x6d, 0xcc, 0x33, 0xba, 0x3f, 0xcc, 0x8d, 0x05,
|
0x19, 0x58, 0xae, 0x77, 0xcb, 0x0b, 0x99, 0x3f, 0xd4, 0xf5, 0xed, 0x0f, 0x75, 0xa3, 0xfc, 0x50,
|
||||||
0x69, 0x0b, 0x76, 0xee, 0x65, 0xea, 0xef, 0x38, 0x7b, 0xff, 0x00, 0x72, 0x67, 0x2b, 0xe1, 0x71,
|
0xcb, 0x7f, 0xae, 0x43, 0xb7, 0x7c, 0x42, 0x86, 0x4e, 0xad, 0x40, 0xe7, 0x08, 0x5a, 0x89, 0x9b,
|
||||||
0xc1, 0xd1, 0x79, 0x80, 0x4b, 0x41, 0xe8, 0x5f, 0x25, 0x1d, 0x46, 0xf0, 0xc3, 0xe9, 0xe3, 0x7d,
|
0x78, 0x59, 0xb2, 0x32, 0x82, 0x78, 0xec, 0x60, 0x92, 0x98, 0x2b, 0xf2, 0x84, 0x72, 0x34, 0xcb,
|
||||||
0x7d, 0xc8, 0xfe, 0xe4, 0xb4, 0x3b, 0x38, 0x85, 0x76, 0xaa, 0x41, 0x6d, 0xa8, 0x5f, 0x19, 0xd3,
|
0x2c, 0xf4, 0x03, 0xb8, 0x93, 0x64, 0xf6, 0x9a, 0x99, 0xb1, 0xac, 0x5c, 0x4a, 0xf9, 0xc2, 0x2c,
|
||||||
0x0f, 0xca, 0x01, 0x92, 0xa0, 0x61, 0x4c, 0xb4, 0x0b, 0x5d, 0xa9, 0x0c, 0xfe, 0x04, 0x20, 0x17,
|
0x6f, 0x51, 0x0e, 0x0a, 0x61, 0x66, 0x3f, 0xeb, 0x28, 0xfa, 0x39, 0xfb, 0x5b, 0xea, 0xc8, 0xf7,
|
||||||
0x08, 0xe6, 0x89, 0xfe, 0x58, 0xea, 0x64, 0x55, 0xbe, 0x53, 0xe8, 0x64, 0x29, 0xbb, 0xd6, 0x0a,
|
0xa1, 0x50, 0x36, 0xb9, 0x4b, 0xac, 0xaf, 0x28, 0x36, 0x78, 0xc5, 0x9a, 0x90, 0xe7, 0xbc, 0x84,
|
||||||
0xec, 0x7a, 0x0a, 0x72, 0x44, 0xe2, 0x4d, 0x18, 0xc4, 0xc4, 0xa2, 0x61, 0x52, 0x26, 0x90, 0xaa,
|
0xb1, 0x37, 0xed, 0xd1, 0xf6, 0xb7, 0xe8, 0x8c, 0xe2, 0x9a, 0xb7, 0x0a, 0xf2, 0x23, 0xd8, 0xcf,
|
||||||
0xcc, 0x90, 0x0d, 0x3a, 0x24, 0x88, 0x2d, 0xfe, 0x30, 0x93, 0xae, 0x46, 0x82, 0x98, 0xd7, 0x50,
|
0x38, 0x68, 0x1f, 0x9a, 0x6f, 0xb4, 0xe9, 0x6b, 0x69, 0x0f, 0x09, 0xd0, 0xd2, 0x26, 0xca, 0x4b,
|
||||||
0x81, 0x64, 0x9a, 0x25, 0x92, 0xd9, 0xe7, 0x8b, 0xd6, 0x27, 0x93, 0x6c, 0xfb, 0x93, 0x48, 0xf6,
|
0x55, 0xaa, 0xc9, 0x7f, 0xa9, 0xc1, 0xfd, 0xea, 0x33, 0x34, 0x62, 0xed, 0x1d, 0x85, 0xef, 0x04,
|
||||||
0x6b, 0x68, 0xc5, 0x62, 0x54, 0x54, 0x25, 0xde, 0x34, 0xd5, 0x3c, 0x40, 0x79, 0x86, 0xbc, 0x3c,
|
0x60, 0x95, 0x5e, 0x7a, 0xae, 0x6d, 0x5e, 0xe3, 0x35, 0x0f, 0x8d, 0xc0, 0x38, 0xaf, 0xf1, 0x1a,
|
||||||
0xc0, 0xa9, 0x29, 0x1a, 0x42, 0x83, 0xcf, 0x60, 0x2a, 0x70, 0x9f, 0xe3, 0xbd, 0xe1, 0x2f, 0xf7,
|
0x3d, 0x86, 0xae, 0xe3, 0xc6, 0x2b, 0xcf, 0x5a, 0x9b, 0xa5, 0xfb, 0x2f, 0x72, 0x1e, 0x4d, 0xb8,
|
||||||
0x10, 0x66, 0xcc, 0xde, 0x66, 0x93, 0x90, 0x2a, 0xef, 0xdb, 0x17, 0x27, 0x2c, 0x66, 0xcf, 0xcd,
|
0x0f, 0x03, 0xfb, 0x1c, 0x9a, 0xae, 0x1d, 0x06, 0x14, 0x4b, 0x71, 0x97, 0x5f, 0x79, 0xaa, 0xe8,
|
||||||
0xd0, 0x97, 0x20, 0x39, 0xe1, 0x7a, 0xbd, 0x0d, 0x3c, 0xba, 0x53, 0x3b, 0xac, 0x22, 0x2f, 0x0f,
|
0x54, 0x58, 0xfe, 0x53, 0x1d, 0xbe, 0xb7, 0x69, 0xb6, 0xef, 0xa7, 0x81, 0x9b, 0xac, 0xa9, 0xe1,
|
||||||
0x70, 0xae, 0x42, 0x23, 0x38, 0x74, 0x45, 0x2b, 0x48, 0x87, 0x65, 0xd5, 0xd9, 0xcf, 0xbe, 0xdc,
|
0x8f, 0x49, 0x23, 0xc0, 0x19, 0xa6, 0x9b, 0x65, 0x95, 0x98, 0xf3, 0x34, 0xe7, 0xff, 0x63, 0xfc,
|
||||||
0x2b, 0x2e, 0x0f, 0x70, 0xcf, 0x2d, 0xf3, 0x5d, 0x46, 0xe0, 0xdd, 0x22, 0x81, 0xbf, 0x81, 0x8e,
|
0x13, 0xe8, 0xf9, 0xd8, 0xbf, 0xc4, 0x51, 0xd6, 0x14, 0xb2, 0x7e, 0xb2, 0xcb, 0x99, 0xb4, 0x21,
|
||||||
0xeb, 0xc5, 0x1b, 0xdf, 0xde, 0x89, 0x8b, 0xec, 0x25, 0xef, 0x46, 0xe8, 0xf8, 0x65, 0x6e, 0xa0,
|
0xa4, 0x8f, 0x5a, 0xe8, 0x85, 0x11, 0x2f, 0x62, 0x8c, 0xc8, 0xfd, 0xee, 0x7c, 0x84, 0xdf, 0xe8,
|
||||||
0x9f, 0x0c, 0xdf, 0x56, 0x44, 0x7e, 0xbb, 0x25, 0x31, 0xb5, 0x36, 0x51, 0xb8, 0xb1, 0xef, 0x6d,
|
0xa7, 0xd0, 0xbe, 0x24, 0xe5, 0x25, 0xa2, 0x77, 0xeb, 0x3b, 0xa8, 0x71, 0x71, 0x52, 0x71, 0x36,
|
||||||
0x46, 0xde, 0x31, 0xb5, 0x29, 0x51, 0x0f, 0x79, 0x3a, 0xef, 0x0a, 0xb7, 0x21, 0x3c, 0xb0, 0x70,
|
0xe3, 0xcc, 0xea, 0x54, 0x0e, 0x17, 0x23, 0xcd, 0x34, 0x2d, 0xc1, 0xc5, 0x78, 0x8b, 0xd4, 0xa5,
|
||||||
0x98, 0x67, 0xf6, 0x0b, 0x66, 0x8e, 0x4f, 0x9c, 0xe7, 0xb6, 0x1f, 0x19, 0x85, 0x94, 0xff, 0x63,
|
0x17, 0x11, 0xfb, 0xe1, 0xaf, 0xdd, 0xec, 0xde, 0x50, 0xe2, 0x06, 0x88, 0x8d, 0x0f, 0x82, 0xd8,
|
||||||
0x14, 0x42, 0xdf, 0x87, 0x06, 0xff, 0x79, 0xa0, 0xbe, 0xe0, 0x59, 0x1d, 0x16, 0xae, 0x98, 0xa9,
|
0xbc, 0x09, 0xe2, 0x76, 0x7c, 0x46, 0x20, 0xe4, 0xe1, 0xe2, 0xef, 0xe7, 0xe7, 0xbb, 0x5a, 0xa7,
|
||||||
0xb1, 0xd8, 0x1d, 0xfc, 0xb5, 0x06, 0xf2, 0xa8, 0xd4, 0xb0, 0x8e, 0xd2, 0x91, 0x75, 0x34, 0x9b,
|
0x4a, 0xf0, 0xf5, 0x42, 0x4f, 0xfe, 0x6f, 0x0d, 0xd0, 0xcd, 0x2e, 0x6b, 0x4b, 0x59, 0xf8, 0x8a,
|
||||||
0x9a, 0xfa, 0xd4, 0x4c, 0x87, 0xd6, 0x1e, 0x80, 0xa9, 0xff, 0xda, 0xb4, 0xe6, 0x57, 0x9a, 0x31,
|
0x3d, 0xe2, 0x96, 0xcd, 0x1a, 0x5b, 0xf1, 0xfc, 0xc9, 0xee, 0xb3, 0xf2, 0xfb, 0xf1, 0x6a, 0x4f,
|
||||||
0x55, 0x2a, 0x48, 0x86, 0xd6, 0xc2, 0x34, 0x46, 0x1f, 0x74, 0xac, 0x54, 0x11, 0x40, 0x73, 0x61,
|
0xcf, 0xb4, 0x90, 0x5a, 0x36, 0xb7, 0xf1, 0x11, 0xe6, 0xbe, 0xda, 0x2b, 0x19, 0x4c, 0xed, 0x60,
|
||||||
0x6a, 0xe6, 0x72, 0xa1, 0xd4, 0xd8, 0xb3, 0xd4, 0x27, 0xb3, 0x5f, 0x1a, 0x4a, 0x1d, 0xbd, 0x82,
|
0xa8, 0xf3, 0x0b, 0xb1, 0xdb, 0x8e, 0x22, 0x7e, 0xd4, 0x0e, 0x46, 0xbe, 0x10, 0xf2, 0x52, 0x2a,
|
||||||
0x97, 0x26, 0xd6, 0xa6, 0x0b, 0x6d, 0x64, 0x1a, 0x33, 0x16, 0x71, 0x32, 0xd1, 0xa6, 0x63, 0xa5,
|
0x5f, 0xc1, 0xe1, 0x96, 0x0e, 0x13, 0xcd, 0x76, 0xf5, 0xa7, 0x35, 0xda, 0x26, 0x3c, 0xbc, 0xad,
|
||||||
0x81, 0xce, 0xe0, 0xed, 0xe2, 0x66, 0x61, 0xea, 0x13, 0x6b, 0xa2, 0x2f, 0x16, 0xda, 0x85, 0x9e,
|
0x3f, 0xdd, 0xde, 0x9e, 0xfe, 0x13, 0x40, 0x2c, 0x75, 0xd6, 0x3b, 0xba, 0xb8, 0x4a, 0xbf, 0x55,
|
||||||
0x7d, 0x6d, 0x8e, 0x8d, 0x6b, 0xcd, 0xd4, 0xad, 0x0b, 0x3c, 0x5b, 0xce, 0x95, 0x66, 0xfe, 0xc8,
|
0xa7, 0x2b, 0xa5, 0x7e, 0x2b, 0x1b, 0x2b, 0x1a, 0xa5, 0xb1, 0xe2, 0x11, 0x88, 0x11, 0x8e, 0x57,
|
||||||
0x5b, 0x6c, 0xc9, 0xc7, 0x68, 0xa5, 0x8d, 0xba, 0x20, 0xb1, 0x60, 0xcb, 0xa9, 0x61, 0xde, 0x28,
|
0x61, 0x10, 0x63, 0x33, 0x09, 0x79, 0xea, 0x40, 0xc6, 0x32, 0x42, 0x32, 0xe1, 0xe1, 0x20, 0x66,
|
||||||
0x12, 0x1b, 0xb4, 0xf7, 0xc2, 0x5d, 0x68, 0x73, 0x05, 0xd0, 0x4b, 0x38, 0x64, 0x71, 0xb5, 0x91,
|
0xa9, 0xc7, 0x7b, 0x2f, 0x1c, 0xc4, 0x34, 0xed, 0x4a, 0xad, 0x70, 0xbb, 0xd2, 0x0a, 0x6f, 0x76,
|
||||||
0x69, 0x61, 0xfd, 0x57, 0x4b, 0x7d, 0x61, 0x2a, 0x32, 0x53, 0x8e, 0x8d, 0xc5, 0x68, 0x86, 0xc7,
|
0xb5, 0x9d, 0x4f, 0x9e, 0x2e, 0xf6, 0x3f, 0x69, 0xba, 0xf8, 0x02, 0x3a, 0x31, 0x9b, 0x91, 0xf9,
|
||||||
0xa9, 0xb5, 0xd2, 0x41, 0x9f, 0xc3, 0x67, 0xc6, 0x58, 0x9f, 0x9a, 0x86, 0x79, 0x63, 0x5d, 0xeb,
|
0x40, 0x30, 0x28, 0x36, 0xa8, 0x0e, 0xcf, 0x24, 0xac, 0x5c, 0x14, 0x9d, 0x41, 0x8b, 0x0e, 0x9f,
|
||||||
0xd8, 0xf8, 0xd6, 0x18, 0x69, 0x2c, 0x67, 0xa5, 0x8b, 0xde, 0xc0, 0xc9, 0x5e, 0xf0, 0xb9, 0x31,
|
0x03, 0xa0, 0x3a, 0xc7, 0x1b, 0x53, 0x6f, 0xa1, 0xc1, 0xc4, 0x88, 0xbc, 0x45, 0x46, 0xc0, 0x81,
|
||||||
0x9d, 0xea, 0xb9, 0x77, 0x0f, 0xbd, 0x85, 0xfe, 0x9e, 0xc9, 0x64, 0x69, 0x2e, 0xb5, 0x2b, 0x4b,
|
0xb8, 0x29, 0x5f, 0x1e, 0x2d, 0x89, 0x3c, 0x15, 0x43, 0x9f, 0x95, 0xd3, 0xb7, 0x4b, 0xae, 0x7f,
|
||||||
0xbf, 0x66, 0x67, 0x5a, 0xe8, 0x53, 0x53, 0x39, 0x7c, 0xe4, 0xd0, 0x25, 0x2b, 0x6d, 0x34, 0xd2,
|
0x35, 0x2f, 0x47, 0x70, 0xe0, 0xb0, 0x86, 0x25, 0xfb, 0x97, 0x60, 0x60, 0x6f, 0x5a, 0x5f, 0xed,
|
||||||
0xe7, 0xa6, 0x3e, 0x56, 0x14, 0xf4, 0x0e, 0xbe, 0xf7, 0x9c, 0x25, 0xd6, 0x27, 0xb3, 0x6b, 0x7d,
|
0x68, 0x5e, 0xed, 0xe9, 0x7d, 0xa7, 0xda, 0x95, 0xe7, 0x63, 0x46, 0xaf, 0x3c, 0x66, 0x6c, 0xd6,
|
||||||
0xac, 0xbc, 0x38, 0x97, 0x32, 0x7e, 0x39, 0xef, 0xfe, 0x46, 0x1e, 0xfe, 0xf8, 0x67, 0xe9, 0x2d,
|
0x90, 0xfe, 0xcd, 0x1a, 0xb2, 0x82, 0x21, 0xbf, 0x67, 0x66, 0x84, 0x7f, 0x93, 0xe2, 0x38, 0x31,
|
||||||
0xdf, 0x36, 0xf9, 0xea, 0xab, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x18, 0x95, 0x9c, 0x97, 0x5f,
|
0x57, 0x51, 0xb8, 0xb2, 0xae, 0xac, 0x84, 0x27, 0x31, 0x1e, 0x1c, 0x50, 0x73, 0x9e, 0x95, 0xa2,
|
||||||
0x0e, 0x00, 0x00,
|
0xc1, 0x34, 0x74, 0xa6, 0x30, 0xcb, 0xe5, 0x49, 0xe6, 0x62, 0xfd, 0xc4, 0xbe, 0x6d, 0x79, 0xcb,
|
||||||
|
0x0c, 0x28, 0x7d, 0xcc, 0x0c, 0xf8, 0x39, 0xb4, 0xe8, 0xff, 0x22, 0x83, 0x3b, 0xd4, 0xaa, 0x83,
|
||||||
|
0x52, 0x88, 0x09, 0x5b, 0x67, 0xab, 0xbb, 0x47, 0x45, 0xf4, 0xc9, 0xa3, 0xe2, 0xdf, 0x1a, 0x20,
|
||||||
|
0x8e, 0x2a, 0x9d, 0xda, 0x51, 0x36, 0xfe, 0x8f, 0x2e, 0xa6, 0x86, 0x3a, 0x35, 0xb2, 0x3f, 0x00,
|
||||||
|
0xfa, 0x00, 0x86, 0xfa, 0x4b, 0xc3, 0x9c, 0xbd, 0x51, 0xb4, 0xa9, 0x54, 0x43, 0x22, 0x74, 0xe6,
|
||||||
|
0x86, 0x36, 0x7a, 0xad, 0xea, 0x52, 0x1d, 0x01, 0xb4, 0xe7, 0x86, 0x62, 0x2c, 0xe6, 0x52, 0x83,
|
||||||
|
0xb4, 0x0b, 0xea, 0xe4, 0xe2, 0x17, 0x9a, 0xd4, 0x44, 0xf7, 0xe0, 0xd0, 0xd0, 0x95, 0xe9, 0x5c,
|
||||||
|
0x19, 0x19, 0xda, 0x05, 0xd9, 0x71, 0x32, 0x51, 0xa6, 0x63, 0xa9, 0x85, 0x4e, 0xe1, 0xe9, 0xfc,
|
||||||
|
0xdd, 0xdc, 0x50, 0x27, 0xe6, 0x44, 0x9d, 0xcf, 0x95, 0x97, 0x6a, 0x7e, 0xda, 0x4c, 0xd7, 0xde,
|
||||||
|
0x2a, 0x86, 0x6a, 0xbe, 0xd4, 0x2f, 0x16, 0x33, 0xa9, 0x5d, 0x34, 0x1f, 0x1d, 0xf2, 0x49, 0xff,
|
||||||
|
0x92, 0x90, 0xf6, 0x51, 0x0f, 0x04, 0xb2, 0xd9, 0x62, 0xaa, 0x19, 0xef, 0x24, 0x01, 0x1d, 0x03,
|
||||||
|
0xda, 0xd8, 0xee, 0xa5, 0x32, 0x93, 0x00, 0x1d, 0xc2, 0x01, 0xd9, 0x57, 0x19, 0x19, 0xa6, 0xae,
|
||||||
|
0x7e, 0xb3, 0x50, 0xe7, 0x86, 0x24, 0x12, 0xe6, 0x58, 0x9b, 0x8f, 0x2e, 0xf4, 0x71, 0x26, 0x2d,
|
||||||
|
0x75, 0xd1, 0x7d, 0xb8, 0xab, 0x8d, 0xd5, 0xa9, 0xa1, 0x19, 0xef, 0xcc, 0xb7, 0xaa, 0xae, 0x7d,
|
||||||
|
0xad, 0x8d, 0x14, 0x62, 0xb3, 0xd4, 0x43, 0x8f, 0xe1, 0x64, 0x63, 0xf3, 0x99, 0x36, 0x9d, 0xaa,
|
||||||
|
0x85, 0x76, 0x1f, 0x3d, 0x85, 0xe1, 0x86, 0xc8, 0x64, 0x61, 0x2c, 0x94, 0x37, 0xa6, 0xfa, 0x96,
|
||||||
|
0xf8, 0x34, 0x57, 0xa7, 0x86, 0x74, 0xb0, 0xc5, 0xe9, 0x8a, 0x94, 0x32, 0x1a, 0xa9, 0x33, 0x43,
|
||||||
|
0x1d, 0x4b, 0x12, 0x7a, 0x06, 0x4f, 0x6e, 0x93, 0xd4, 0xd5, 0xc9, 0xc5, 0x5b, 0x75, 0x2c, 0xdd,
|
||||||
|
0x29, 0x95, 0xef, 0x17, 0xbd, 0x5f, 0x89, 0x67, 0x3f, 0xfa, 0x59, 0x96, 0x01, 0x97, 0x6d, 0xfa,
|
||||||
|
0xf5, 0xfc, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x3e, 0x26, 0x1f, 0x1a, 0xab, 0x13, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,7 @@ message EditMessage {
|
||||||
|
|
||||||
ChatMessage.ContentType content_type = 7;
|
ChatMessage.ContentType content_type = 7;
|
||||||
repeated UnfurledLink unfurled_links = 8;
|
repeated UnfurledLink unfurled_links = 8;
|
||||||
|
UnfurledStatusLinks unfurled_status_links = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
message DeleteMessage {
|
message DeleteMessage {
|
||||||
|
@ -108,6 +109,12 @@ message DiscordMessageAttachment {
|
||||||
string localUrl = 8;
|
string localUrl = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message UnfurledLinkThumbnail {
|
||||||
|
bytes payload = 1;
|
||||||
|
uint32 width = 2;
|
||||||
|
uint32 height = 3;
|
||||||
|
}
|
||||||
|
|
||||||
message UnfurledLink {
|
message UnfurledLink {
|
||||||
// A valid URL which uniquely identifies this link.
|
// A valid URL which uniquely identifies this link.
|
||||||
string url = 1;
|
string url = 1;
|
||||||
|
@ -127,6 +134,46 @@ message UnfurledLink {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message UnfurledStatusContactLink {
|
||||||
|
bytes public_key = 1;
|
||||||
|
string display_name = 2;
|
||||||
|
string description = 3;
|
||||||
|
UnfurledLinkThumbnail icon = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
message UnfurledStatusCommunityLink {
|
||||||
|
bytes community_id = 1;
|
||||||
|
string display_name = 2;
|
||||||
|
string description = 3;
|
||||||
|
uint32 members_count = 4;
|
||||||
|
string color = 5;
|
||||||
|
UnfurledLinkThumbnail icon = 7;
|
||||||
|
UnfurledLinkThumbnail banner = 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
message UnfurledStatusChannelLink {
|
||||||
|
bytes channel_uuid = 1;
|
||||||
|
string emoji = 2;
|
||||||
|
string display_name = 3;
|
||||||
|
string description = 4;
|
||||||
|
string color = 5;
|
||||||
|
UnfurledStatusCommunityLink community = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
message UnfurledStatusLink {
|
||||||
|
string url = 1;
|
||||||
|
oneof payload {
|
||||||
|
UnfurledStatusContactLink contact = 2;
|
||||||
|
UnfurledStatusCommunityLink community = 3;
|
||||||
|
UnfurledStatusChannelLink channel = 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a wrapper around repeated property for proper unmarshalling
|
||||||
|
message UnfurledStatusLinks {
|
||||||
|
repeated UnfurledStatusLink unfurled_status_links = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message ChatMessage {
|
message ChatMessage {
|
||||||
// Lamport timestamp of the chat message
|
// Lamport timestamp of the chat message
|
||||||
uint64 clock = 1;
|
uint64 clock = 1;
|
||||||
|
@ -171,6 +218,8 @@ message ChatMessage {
|
||||||
|
|
||||||
Shard shard = 17;
|
Shard shard = 17;
|
||||||
|
|
||||||
|
UnfurledStatusLinks unfurled_status_links = 18;
|
||||||
|
|
||||||
enum ContentType {
|
enum ContentType {
|
||||||
UNKNOWN_CONTENT_TYPE = 0;
|
UNKNOWN_CONTENT_TYPE = 0;
|
||||||
TEXT_PLAIN = 1;
|
TEXT_PLAIN = 1;
|
||||||
|
|
|
@ -39,7 +39,6 @@ const (
|
||||||
SyncSetting_DISPLAY_NAME SyncSetting_Type = 13
|
SyncSetting_DISPLAY_NAME SyncSetting_Type = 13
|
||||||
SyncSetting_BIO SyncSetting_Type = 14
|
SyncSetting_BIO SyncSetting_Type = 14
|
||||||
SyncSetting_MNEMONIC_REMOVED SyncSetting_Type = 15
|
SyncSetting_MNEMONIC_REMOVED SyncSetting_Type = 15
|
||||||
SyncSetting_INCLUDE_WATCHONLY_ACCOUNT SyncSetting_Type = 17
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var SyncSetting_Type_name = map[int32]string{
|
var SyncSetting_Type_name = map[int32]string{
|
||||||
|
@ -225,37 +224,36 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor_e2f7a0bce2873c78 = []byte{
|
var fileDescriptor_e2f7a0bce2873c78 = []byte{
|
||||||
// 508 bytes of a gzipped FileDescriptorProto
|
// 484 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x92, 0xcf, 0x6f, 0xd3, 0x30,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x92, 0x4d, 0x8f, 0xda, 0x3c,
|
||||||
0x14, 0xc7, 0x9b, 0x35, 0x5d, 0xbb, 0x97, 0x6e, 0x33, 0xde, 0x04, 0x61, 0x80, 0x16, 0xc6, 0x25,
|
0x10, 0x80, 0x09, 0x84, 0xaf, 0x09, 0x0b, 0x96, 0x59, 0xbd, 0x6f, 0xb4, 0xad, 0xb4, 0x29, 0xbd,
|
||||||
0xa7, 0x20, 0x01, 0xe2, 0xc2, 0xc9, 0x75, 0xdc, 0xd5, 0x6a, 0x62, 0x47, 0xb6, 0xd3, 0xaa, 0x5c,
|
0xe4, 0x94, 0x4a, 0x6d, 0xd5, 0x4b, 0x4f, 0x21, 0x31, 0x60, 0x91, 0xd8, 0x91, 0xed, 0x80, 0xe8,
|
||||||
0x2c, 0x5a, 0x95, 0xa9, 0xa2, 0x6a, 0xaa, 0x35, 0x43, 0xea, 0x91, 0x7f, 0x82, 0xbf, 0x17, 0x25,
|
0xc5, 0x2a, 0x88, 0xae, 0x50, 0x11, 0x41, 0x4b, 0xb6, 0x52, 0xfe, 0x6e, 0xff, 0x44, 0xaf, 0x55,
|
||||||
0xa1, 0xfc, 0x3c, 0xd9, 0xef, 0xfb, 0x3e, 0xef, 0xeb, 0xe7, 0x67, 0xc3, 0xc5, 0x6e, 0xbf, 0x59,
|
0x92, 0xd2, 0xcf, 0x53, 0x32, 0xcf, 0x3c, 0x33, 0x1e, 0x7f, 0xc0, 0xf8, 0x52, 0x9c, 0x76, 0xfa,
|
||||||
0xd8, 0xdd, 0xb2, 0x2c, 0x57, 0x9b, 0xbb, 0x5d, 0xb4, 0xbd, 0x2f, 0xca, 0x02, 0xf7, 0xea, 0x65,
|
0xb2, 0xcf, 0xf3, 0xc3, 0xe9, 0xe1, 0xe2, 0x9d, 0x1f, 0xb3, 0x3c, 0xc3, 0xbd, 0xea, 0xb3, 0x7d,
|
||||||
0xfe, 0xf0, 0xf9, 0xe6, 0x5b, 0x07, 0x3c, 0xbd, 0xdf, 0x2c, 0x74, 0x03, 0xe0, 0x08, 0xdc, 0x72,
|
0xfa, 0x34, 0xf9, 0x6a, 0x82, 0x25, 0x8b, 0xd3, 0x4e, 0xd6, 0x02, 0xf6, 0xc0, 0xcc, 0x8b, 0xf3,
|
||||||
0xbf, 0x5d, 0xfa, 0x4e, 0xe0, 0x84, 0x67, 0x6f, 0xae, 0xa2, 0x03, 0x18, 0xfd, 0x01, 0x45, 0x66,
|
0xde, 0x36, 0x1c, 0xc3, 0x1d, 0xbe, 0xbe, 0xf3, 0xae, 0xa2, 0xf7, 0x9b, 0xe4, 0xa9, 0xe2, 0xbc,
|
||||||
0xbf, 0x5d, 0xaa, 0x9a, 0xc3, 0x97, 0xd0, 0x59, 0xac, 0x8b, 0xc5, 0x17, 0xff, 0x28, 0x70, 0x42,
|
0x17, 0x95, 0x87, 0x6f, 0xa1, 0xbd, 0x3b, 0x66, 0xbb, 0xcf, 0x76, 0xd3, 0x31, 0x5c, 0x53, 0xd4,
|
||||||
0x57, 0x35, 0x01, 0x7e, 0x05, 0xfd, 0xaf, 0x9f, 0xd6, 0x0f, 0x4b, 0xbb, 0x2b, 0xef, 0x57, 0x9b,
|
0x01, 0x7e, 0x09, 0x83, 0x2f, 0x1f, 0x8f, 0x4f, 0x7b, 0x7d, 0xc9, 0x1f, 0x0f, 0xa7, 0x07, 0xbb,
|
||||||
0x3b, 0xbf, 0x1d, 0x38, 0xe1, 0xc9, 0xa8, 0xa5, 0xbc, 0x5a, 0xd5, 0xb5, 0x88, 0x5f, 0x42, 0x13,
|
0xe5, 0x18, 0x6e, 0x7f, 0xd1, 0x10, 0x56, 0x45, 0x65, 0x05, 0xf1, 0x0b, 0xa8, 0x43, 0xbd, 0x2d,
|
||||||
0xda, 0xf9, 0xbe, 0x5c, 0xee, 0x7c, 0x37, 0x70, 0xc2, 0xfe, 0xa8, 0xa5, 0xa0, 0x16, 0x07, 0x95,
|
0xf2, 0xfd, 0xc5, 0x36, 0x1d, 0xc3, 0x1d, 0x2c, 0x1a, 0x02, 0x2a, 0x38, 0x2d, 0x19, 0xbe, 0x07,
|
||||||
0x86, 0xaf, 0x01, 0x7e, 0x22, 0x45, 0xb1, 0xf6, 0x3b, 0x81, 0x13, 0xf6, 0x46, 0x2d, 0x75, 0xd2,
|
0xf8, 0xa1, 0x64, 0xd9, 0xd1, 0x6e, 0x3b, 0x86, 0xdb, 0x5b, 0x34, 0x44, 0xbf, 0x36, 0xb2, 0xec,
|
||||||
0x10, 0x45, 0xb1, 0xfe, 0xed, 0xb1, 0xda, 0x94, 0xef, 0xdf, 0xf9, 0xc7, 0x81, 0x13, 0xb6, 0x7f,
|
0xf8, 0xab, 0xc7, 0xe1, 0x94, 0xbf, 0x7b, 0x6b, 0x77, 0x1c, 0xc3, 0x6d, 0xfd, 0xec, 0x41, 0x4b,
|
||||||
0x79, 0xf0, 0x4a, 0xbb, 0xf9, 0xde, 0x06, 0xb7, 0x6a, 0x18, 0x7b, 0xd0, 0xcd, 0xc5, 0x58, 0xc8,
|
0x36, 0xf9, 0xd6, 0x04, 0xb3, 0x1c, 0x18, 0x5b, 0xd0, 0x4d, 0xd9, 0x92, 0xf1, 0x35, 0x43, 0x0d,
|
||||||
0xa9, 0x40, 0x2d, 0xdc, 0x87, 0x1e, 0xcd, 0x95, 0x62, 0x82, 0xce, 0x90, 0x83, 0xcf, 0xc1, 0xbb,
|
0x3c, 0x80, 0x5e, 0x90, 0x0a, 0x41, 0x58, 0xb0, 0x41, 0x06, 0x1e, 0x81, 0x35, 0xa7, 0x33, 0x2d,
|
||||||
0xe5, 0x43, 0xab, 0x18, 0x65, 0xc2, 0x68, 0x74, 0x84, 0x31, 0x9c, 0x55, 0xc2, 0x90, 0x4c, 0x64,
|
0x48, 0x40, 0x98, 0x92, 0xa8, 0x89, 0x31, 0x0c, 0x4b, 0x30, 0xf3, 0x57, 0x3c, 0x15, 0x54, 0x11,
|
||||||
0xae, 0xb8, 0x61, 0x1a, 0xb5, 0xf1, 0x35, 0x3c, 0x4b, 0x99, 0xd6, 0xe4, 0x96, 0x69, 0x3b, 0x54,
|
0x89, 0x5a, 0xf8, 0x1e, 0x9e, 0xc5, 0x44, 0x4a, 0x7f, 0x4e, 0xa4, 0x9e, 0x09, 0x1e, 0xeb, 0x80,
|
||||||
0x32, 0xb5, 0x54, 0x0a, 0x43, 0xa8, 0xd1, 0x56, 0x8a, 0x64, 0x86, 0xdc, 0xaa, 0x28, 0x53, 0x6c,
|
0x33, 0xe5, 0x07, 0x4a, 0x6a, 0xce, 0xa2, 0x0d, 0x32, 0xcb, 0xa2, 0x44, 0x90, 0x19, 0x11, 0x82,
|
||||||
0xc8, 0x94, 0x62, 0xb1, 0x15, 0x24, 0x65, 0xa8, 0x83, 0x2f, 0xe0, 0x3c, 0x53, 0x6c, 0xc2, 0xd9,
|
0x84, 0x9a, 0xf9, 0x31, 0x41, 0x6d, 0x3c, 0x86, 0x51, 0x22, 0xc8, 0x8a, 0x92, 0xb5, 0x4e, 0x04,
|
||||||
0xd4, 0x66, 0x8a, 0x4f, 0x08, 0x9d, 0xa1, 0x63, 0xfc, 0x1c, 0xfc, 0x4c, 0xc9, 0x21, 0x4f, 0x98,
|
0x5d, 0xf9, 0xc1, 0x06, 0x75, 0xf0, 0x73, 0xb0, 0x13, 0xc1, 0x67, 0x34, 0x22, 0x3a, 0xa1, 0x81,
|
||||||
0xcd, 0x38, 0x35, 0xb9, 0x62, 0xda, 0xea, 0x91, 0x9c, 0x5a, 0x23, 0x51, 0xb7, 0x3a, 0xe7, 0xbf,
|
0x4a, 0x05, 0x91, 0x5a, 0x2e, 0xf8, 0x5a, 0x2b, 0x8e, 0xba, 0xe5, 0x3a, 0xff, 0x64, 0x57, 0x54,
|
||||||
0xec, 0x84, 0x6b, 0x3e, 0xe0, 0x09, 0x37, 0x33, 0xd4, 0xc3, 0x4f, 0xe0, 0x42, 0x33, 0x11, 0x5b,
|
0xd2, 0x29, 0x8d, 0xa8, 0xda, 0xa0, 0x1e, 0xfe, 0x1f, 0xc6, 0x92, 0xb0, 0x50, 0x4b, 0xe5, 0xab,
|
||||||
0x6d, 0x88, 0xc9, 0xb5, 0xcd, 0xb3, 0x98, 0x54, 0x1d, 0x9e, 0x54, 0xbe, 0xda, 0x70, 0x3a, 0x66,
|
0x54, 0xea, 0x34, 0x09, 0xfd, 0x72, 0xc2, 0x7e, 0xd9, 0x57, 0x2a, 0x1a, 0x2c, 0x89, 0x90, 0x3a,
|
||||||
0x4a, 0xdb, 0x8c, 0xd0, 0xb1, 0xb6, 0x5c, 0x68, 0x43, 0x92, 0x84, 0xc5, 0x08, 0xf0, 0x15, 0x3c,
|
0xf1, 0x83, 0xa5, 0xd4, 0x94, 0x49, 0xe5, 0x47, 0x11, 0x09, 0x11, 0xe0, 0x3b, 0xf8, 0xef, 0xaf,
|
||||||
0xfe, 0x27, 0x9b, 0x31, 0x11, 0x73, 0x71, 0x8b, 0xbc, 0xbf, 0x2a, 0x9b, 0x29, 0xd8, 0x43, 0x8c,
|
0x6c, 0x42, 0x58, 0x48, 0xd9, 0x1c, 0x59, 0x7f, 0x54, 0xd6, 0xa7, 0xa0, 0xaf, 0x31, 0x1a, 0x60,
|
||||||
0xfa, 0x18, 0x41, 0x3f, 0xe6, 0x3a, 0x4b, 0xc8, 0xac, 0xb9, 0xd6, 0x29, 0xee, 0x42, 0x7b, 0xc0,
|
0x04, 0x83, 0x90, 0xca, 0x24, 0xf2, 0x37, 0xf5, 0xb6, 0x6e, 0x70, 0x17, 0x5a, 0x53, 0xca, 0xd1,
|
||||||
0x25, 0x3a, 0xc3, 0x97, 0x80, 0x52, 0xc1, 0x52, 0x29, 0x38, 0xb5, 0x8a, 0xa5, 0x72, 0xc2, 0x62,
|
0x10, 0xdf, 0x02, 0x8a, 0x19, 0x89, 0x39, 0xa3, 0x81, 0x16, 0x24, 0xe6, 0x2b, 0x12, 0xa2, 0xd1,
|
||||||
0x74, 0x8e, 0x5f, 0xc0, 0x53, 0x2e, 0x68, 0x92, 0xc7, 0xcc, 0x4e, 0x89, 0xa1, 0xa3, 0x6a, 0x40,
|
0xc4, 0xec, 0x21, 0x84, 0xa6, 0x5d, 0x68, 0xd7, 0x37, 0x75, 0xf3, 0xc1, 0xf2, 0x5e, 0xbd, 0xbf,
|
||||||
0x96, 0x50, 0x2a, 0x73, 0x61, 0xd0, 0xa3, 0x1b, 0xb7, 0x87, 0x10, 0x1a, 0x74, 0xa1, 0xd3, 0x3c,
|
0x3e, 0xa5, 0x6d, 0xa7, 0xfa, 0x7b, 0xf3, 0x3d, 0x00, 0x00, 0xff, 0xff, 0xd4, 0x80, 0xfb, 0x9e,
|
||||||
0xe4, 0xe9, 0x47, 0x2f, 0x7a, 0xfd, 0xe1, 0xf0, 0xd3, 0xe6, 0xc7, 0xf5, 0xee, 0xed, 0x8f, 0x00,
|
0x9b, 0x02, 0x00, 0x00,
|
||||||
0x00, 0x00, 0xff, 0xff, 0xe1, 0x41, 0x4b, 0xcb, 0xba, 0x02, 0x00, 0x00,
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,7 @@ func _1593601729_initial_schemaDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1593601729_initial_schema.down.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1593601729_initial_schema.down.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ func _1593601729_initial_schemaUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1593601729_initial_schema.up.sql", size: 1773, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1593601729_initial_schema.up.sql", size: 1773, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ func _1597909626_add_server_typeDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1597909626_add_server_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1597909626_add_server_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -150,7 +150,7 @@ func _1597909626_add_server_typeUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1597909626_add_server_type.up.sql", size: 145, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1597909626_add_server_type.up.sql", size: 145, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -170,7 +170,7 @@ func _1599053776_add_chat_id_and_typeDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -190,7 +190,7 @@ func _1599053776_add_chat_id_and_typeUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.up.sql", size: 264, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.up.sql", size: 264, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -210,7 +210,7 @@ func docGo() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,7 @@ func _1593601728_initial_schemaDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1593601728_initial_schema.down.sql", size: 200, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1593601728_initial_schema.down.sql", size: 200, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ func _1593601728_initial_schemaUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1593601728_initial_schema.up.sql", size: 675, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1593601728_initial_schema.up.sql", size: 675, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,7 @@ func _1598419937_add_push_notifications_tableDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1598419937_add_push_notifications_table.down.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1598419937_add_push_notifications_table.down.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ func _1598419937_add_push_notifications_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1598419937_add_push_notifications_table.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1598419937_add_push_notifications_table.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -168,7 +168,7 @@ func docGo() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,10 +12,11 @@ var ErrEditMessageInvalidID = errors.New("edit-message: invalid id")
|
||||||
var ErrEditMessageInvalidText = errors.New("edit-message: invalid text")
|
var ErrEditMessageInvalidText = errors.New("edit-message: invalid text")
|
||||||
|
|
||||||
type EditMessage struct {
|
type EditMessage struct {
|
||||||
ID types.HexBytes `json:"id"`
|
ID types.HexBytes `json:"id"`
|
||||||
Text string `json:"text"`
|
Text string `json:"text"`
|
||||||
ContentType protobuf.ChatMessage_ContentType `json:"content-type"`
|
ContentType protobuf.ChatMessage_ContentType `json:"content-type"`
|
||||||
LinkPreviews []common.LinkPreview `json:"linkPreviews"`
|
LinkPreviews []common.LinkPreview `json:"linkPreviews"`
|
||||||
|
StatusLinkPreviews []common.StatusLinkPreview `json:"statusLinkPreviews"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *EditMessage) Validate() error {
|
func (e *EditMessage) Validate() error {
|
||||||
|
|
|
@ -89,7 +89,7 @@ func _1561059284_add_waku_keysDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1561059284_add_waku_keys.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1561059284_add_waku_keys.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ func _1561059284_add_waku_keysUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1561059284_add_waku_keys.up.sql", size: 109, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1561059284_add_waku_keys.up.sql", size: 109, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@ func _1616691080_add_wakuv2_keysDownSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -149,7 +149,7 @@ func _1616691080_add_wakuv2_keysUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,7 @@ func _1634723014_add_wakuv2_keysUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1634723014_add_wakuV2_keys.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1634723014_add_wakuV2_keys.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -189,7 +189,7 @@ func docGo() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "doc.go", size: 373, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "doc.go", size: 373, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,9 +3,7 @@ package server
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"encoding/json"
|
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"image"
|
"image"
|
||||||
"image/color"
|
"image/color"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -22,17 +20,17 @@ import (
|
||||||
"github.com/status-im/status-go/multiaccounts"
|
"github.com/status-im/status-go/multiaccounts"
|
||||||
"github.com/status-im/status-go/protocol/identity/colorhash"
|
"github.com/status-im/status-go/protocol/identity/colorhash"
|
||||||
"github.com/status-im/status-go/protocol/identity/ring"
|
"github.com/status-im/status-go/protocol/identity/ring"
|
||||||
"github.com/status-im/status-go/protocol/protobuf"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
basePath = "/messages"
|
basePath = "/messages"
|
||||||
imagesPath = basePath + "/images"
|
imagesPath = basePath + "/images"
|
||||||
audioPath = basePath + "/audio"
|
audioPath = basePath + "/audio"
|
||||||
ipfsPath = "/ipfs"
|
ipfsPath = "/ipfs"
|
||||||
discordAuthorsPath = "/discord/authors"
|
discordAuthorsPath = "/discord/authors"
|
||||||
discordAttachmentsPath = basePath + "/discord/attachments"
|
discordAttachmentsPath = basePath + "/discord/attachments"
|
||||||
LinkPreviewThumbnailPath = "/link-preview/thumbnail"
|
LinkPreviewThumbnailPath = "/link-preview/thumbnail"
|
||||||
|
StatusLinkPreviewThumbnailPath = "/status-link-preview/thumbnail"
|
||||||
|
|
||||||
// Handler routes for pairing
|
// Handler routes for pairing
|
||||||
accountImagesPath = "/accountImages"
|
accountImagesPath = "/accountImages"
|
||||||
|
@ -80,6 +78,7 @@ type ImageParams struct {
|
||||||
URL string
|
URL string
|
||||||
MessageID string
|
MessageID string
|
||||||
AttachmentID string
|
AttachmentID string
|
||||||
|
ImageID string
|
||||||
|
|
||||||
Hash string
|
Hash string
|
||||||
Download bool
|
Download bool
|
||||||
|
@ -266,6 +265,10 @@ func ParseImageParams(logger *zap.Logger, params url.Values) ImageParams {
|
||||||
parsed.AuthorID = authorIds[0]
|
parsed.AuthorID = authorIds[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if imageIds := params["image-id"]; len(imageIds) != 0 {
|
||||||
|
parsed.ImageID = imageIds[0]
|
||||||
|
}
|
||||||
|
|
||||||
urls := params["url"]
|
urls := params["url"]
|
||||||
if len(urls) != 0 {
|
if len(urls) != 0 {
|
||||||
parsed.URL = urls[0]
|
parsed.URL = urls[0]
|
||||||
|
@ -917,66 +920,3 @@ 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) {
|
|
||||||
params := r.URL.Query()
|
|
||||||
parsed := ParseImageParams(logger, params)
|
|
||||||
|
|
||||||
if parsed.MessageID == "" {
|
|
||||||
http.Error(w, "missing query parameter 'message-id'", http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if parsed.URL == "" {
|
|
||||||
http.Error(w, "missing query parameter 'url'", http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
thumbnail, err := getThumbnailPayload(db, logger, parsed.MessageID, parsed.URL)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("failed to get thumbnail", zap.String("msgID", parsed.MessageID))
|
|
||||||
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))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,209 @@
|
||||||
|
package server
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/golang/protobuf/proto"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
|
||||||
|
"github.com/status-im/status-go/images"
|
||||||
|
"github.com/status-im/status-go/protocol/common"
|
||||||
|
"github.com/status-im/status-go/protocol/protobuf"
|
||||||
|
)
|
||||||
|
|
||||||
|
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) {
|
||||||
|
params := r.URL.Query()
|
||||||
|
parsed := ParseImageParams(logger, params)
|
||||||
|
|
||||||
|
if parsed.MessageID == "" {
|
||||||
|
http.Error(w, "missing query parameter 'message-id'", http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if parsed.URL == "" {
|
||||||
|
http.Error(w, "missing query parameter 'url'", http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
thumbnail, err := getThumbnailPayload(db, logger, parsed.MessageID, parsed.URL)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("failed to get thumbnail", zap.String("msgID", parsed.MessageID))
|
||||||
|
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))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getStatusLinkPreviewImage(p *protobuf.UnfurledStatusLink, imageID common.MediaServerImageID) ([]byte, error) {
|
||||||
|
|
||||||
|
switch imageID {
|
||||||
|
case common.MediaServerContactIcon:
|
||||||
|
contact := p.GetContact()
|
||||||
|
if contact == nil {
|
||||||
|
return nil, fmt.Errorf("this is not a contact link")
|
||||||
|
}
|
||||||
|
if contact.Icon == nil {
|
||||||
|
return nil, fmt.Errorf("contact icon is empty")
|
||||||
|
}
|
||||||
|
return contact.Icon.Payload, nil
|
||||||
|
|
||||||
|
case common.MediaServerCommunityIcon:
|
||||||
|
community := p.GetCommunity()
|
||||||
|
if community == nil {
|
||||||
|
return nil, fmt.Errorf("this is not a community link")
|
||||||
|
}
|
||||||
|
if community.Icon == nil {
|
||||||
|
return nil, fmt.Errorf("community icon is empty")
|
||||||
|
}
|
||||||
|
return community.Icon.Payload, nil
|
||||||
|
|
||||||
|
case common.MediaServerCommunityBanner:
|
||||||
|
community := p.GetCommunity()
|
||||||
|
if community == nil {
|
||||||
|
return nil, fmt.Errorf("this is not a community link")
|
||||||
|
}
|
||||||
|
if community.Banner == nil {
|
||||||
|
return nil, fmt.Errorf("community banner is empty")
|
||||||
|
}
|
||||||
|
return community.Banner.Payload, nil
|
||||||
|
|
||||||
|
case common.MediaServerChannelCommunityIcon:
|
||||||
|
channel := p.GetChannel()
|
||||||
|
if channel == nil {
|
||||||
|
return nil, fmt.Errorf("this is not a community channel link")
|
||||||
|
}
|
||||||
|
if channel.Community == nil {
|
||||||
|
return nil, fmt.Errorf("channel community is empty")
|
||||||
|
}
|
||||||
|
if channel.Community.Icon == nil {
|
||||||
|
return nil, fmt.Errorf("channel community icon is empty")
|
||||||
|
}
|
||||||
|
return channel.Community.Icon.Payload, nil
|
||||||
|
|
||||||
|
case common.MediaServerChannelCommunityBanner:
|
||||||
|
channel := p.GetChannel()
|
||||||
|
if channel == nil {
|
||||||
|
return nil, fmt.Errorf("this is not a community channel link")
|
||||||
|
}
|
||||||
|
if channel.Community == nil {
|
||||||
|
return nil, fmt.Errorf("channel community is empty")
|
||||||
|
}
|
||||||
|
if channel.Community.Banner == nil {
|
||||||
|
return nil, fmt.Errorf("channel community banner is empty")
|
||||||
|
}
|
||||||
|
return channel.Community.Banner.Payload, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, fmt.Errorf("value not supported")
|
||||||
|
}
|
||||||
|
|
||||||
|
func getStatusLinkPreviewThumbnail(db *sql.DB, messageID string, URL string, imageID common.MediaServerImageID) ([]byte, int, error) {
|
||||||
|
var messageLinks []byte
|
||||||
|
err := db.QueryRow(`SELECT unfurled_status_links FROM user_messages WHERE id = ?`, messageID).Scan(&messageLinks)
|
||||||
|
if err != nil {
|
||||||
|
return nil, http.StatusBadRequest, fmt.Errorf("could not find message with message-id '%s': %w", messageID, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var links protobuf.UnfurledStatusLinks
|
||||||
|
err = proto.Unmarshal(messageLinks, &links)
|
||||||
|
if err != nil {
|
||||||
|
return nil, http.StatusInternalServerError, fmt.Errorf("failed to unmarshal protobuf.UrlPreview: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, p := range links.UnfurledStatusLinks {
|
||||||
|
if p.Url == URL {
|
||||||
|
thumbnailPayload, err := getStatusLinkPreviewImage(p, imageID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, http.StatusBadRequest, fmt.Errorf("invalid query parameter 'image-id' value: %w", err)
|
||||||
|
}
|
||||||
|
return thumbnailPayload, http.StatusOK, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, http.StatusBadRequest, fmt.Errorf("no link preview found for given url")
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleStatusLinkPreviewThumbnail(db *sql.DB, logger *zap.Logger) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
params := r.URL.Query()
|
||||||
|
parsed := ParseImageParams(logger, params)
|
||||||
|
|
||||||
|
if parsed.MessageID == "" {
|
||||||
|
http.Error(w, "missing query parameter 'message-id'", http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if parsed.URL == "" {
|
||||||
|
http.Error(w, "missing query parameter 'url'", http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if parsed.ImageID == "" {
|
||||||
|
http.Error(w, "missing query parameter 'image-id'", http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
thumbnail, httpsStatusCode, err := getStatusLinkPreviewThumbnail(db, parsed.MessageID, parsed.URL, common.MediaServerImageID(parsed.ImageID))
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, err.Error(), httpsStatusCode)
|
||||||
|
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))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,28 +8,40 @@ import (
|
||||||
"net/url"
|
"net/url"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/golang/protobuf/proto"
|
||||||
|
"github.com/stretchr/testify/suite"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
|
||||||
"github.com/status-im/status-go/appdatabase"
|
"github.com/status-im/status-go/appdatabase"
|
||||||
"github.com/status-im/status-go/logutils"
|
|
||||||
"github.com/status-im/status-go/protocol/common"
|
"github.com/status-im/status-go/protocol/common"
|
||||||
"github.com/status-im/status-go/protocol/protobuf"
|
"github.com/status-im/status-go/protocol/protobuf"
|
||||||
"github.com/status-im/status-go/protocol/sqlite"
|
"github.com/status-im/status-go/protocol/sqlite"
|
||||||
|
"github.com/status-im/status-go/protocol/tt"
|
||||||
"github.com/status-im/status-go/t/helpers"
|
"github.com/status-im/status-go/t/helpers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func setupTest(t *testing.T) (*sql.DB, *zap.Logger) {
|
func TestHandlersSuite(t *testing.T) {
|
||||||
db, err := helpers.SetupTestMemorySQLDB(appdatabase.DbInitializer{})
|
suite.Run(t, new(HandlersSuite))
|
||||||
require.NoError(t, err)
|
|
||||||
err = sqlite.Migrate(db)
|
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
logger := logutils.ZapLogger()
|
|
||||||
return db, logger
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func createUserMessage(t *testing.T, db *sql.DB, msg *common.Message) {
|
type HandlersSuite struct {
|
||||||
|
suite.Suite
|
||||||
|
db *sql.DB
|
||||||
|
logger *zap.Logger
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *HandlersSuite) SetupTest() {
|
||||||
|
db, err := helpers.SetupTestMemorySQLDB(appdatabase.DbInitializer{})
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
err = sqlite.Migrate(db)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
s.logger = tt.MustCreateTestLogger()
|
||||||
|
s.db = db
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *HandlersSuite) saveUserMessage(msg *common.Message) {
|
||||||
whisperTimestamp := 0
|
whisperTimestamp := 0
|
||||||
source := ""
|
source := ""
|
||||||
text := ""
|
text := ""
|
||||||
|
@ -40,7 +52,7 @@ func createUserMessage(t *testing.T, db *sql.DB, msg *common.Message) {
|
||||||
responseTo := ""
|
responseTo := ""
|
||||||
clockValue := 0
|
clockValue := 0
|
||||||
|
|
||||||
stmt, err := db.Prepare(`
|
stmt, err := s.db.Prepare(`
|
||||||
INSERT INTO user_messages (
|
INSERT INTO user_messages (
|
||||||
id,
|
id,
|
||||||
whisper_timestamp,
|
whisper_timestamp,
|
||||||
|
@ -52,13 +64,25 @@ func createUserMessage(t *testing.T, db *sql.DB, msg *common.Message) {
|
||||||
local_chat_id,
|
local_chat_id,
|
||||||
response_to,
|
response_to,
|
||||||
clock_value,
|
clock_value,
|
||||||
unfurled_links
|
unfurled_links,
|
||||||
) VALUES (?,?,?,?,?,?,?,?,?,?,?)
|
unfurled_status_links
|
||||||
|
) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)
|
||||||
`)
|
`)
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
links, err := json.Marshal(msg.UnfurledLinks)
|
s.Require().NoError(err)
|
||||||
require.NoError(t, err)
|
|
||||||
|
links := []byte{}
|
||||||
|
statusLinks := []byte{}
|
||||||
|
|
||||||
|
if msg.UnfurledLinks != nil {
|
||||||
|
links, err = json.Marshal(msg.UnfurledLinks)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if msg.UnfurledStatusLinks != nil {
|
||||||
|
statusLinks, err = proto.Marshal(msg.UnfurledStatusLinks)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
}
|
||||||
|
|
||||||
_, err = stmt.Exec(
|
_, err = stmt.Exec(
|
||||||
msg.ID,
|
msg.ID,
|
||||||
|
@ -72,13 +96,14 @@ func createUserMessage(t *testing.T, db *sql.DB, msg *common.Message) {
|
||||||
responseTo,
|
responseTo,
|
||||||
clockValue,
|
clockValue,
|
||||||
links,
|
links,
|
||||||
|
statusLinks,
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
s.Require().NoError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func httpGetReqRecorder(t *testing.T, handler http.HandlerFunc, reqURL string) *httptest.ResponseRecorder {
|
func (s *HandlersSuite) httpGetReqRecorder(handler http.HandlerFunc, reqURL string) *httptest.ResponseRecorder {
|
||||||
req, err := http.NewRequest("GET", reqURL, nil)
|
req, err := http.NewRequest("GET", reqURL, nil)
|
||||||
require.NoError(t, err)
|
s.Require().NoError(err)
|
||||||
|
|
||||||
rr := httptest.NewRecorder()
|
rr := httptest.NewRecorder()
|
||||||
handler.ServeHTTP(rr, req)
|
handler.ServeHTTP(rr, req)
|
||||||
|
@ -86,49 +111,437 @@ func httpGetReqRecorder(t *testing.T, handler http.HandlerFunc, reqURL string) *
|
||||||
return rr
|
return rr
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHandleLinkPreviewThumbnail(t *testing.T) {
|
func (s *HandlersSuite) verifyHTTPResponseThumbnail(rr *httptest.ResponseRecorder, expectedPayload []byte) {
|
||||||
db, logger := setupTest(t)
|
s.Require().Equal(expectedPayload, rr.Body.Bytes())
|
||||||
|
s.Require().Equal("image/jpeg", rr.HeaderMap.Get("Content-Type"))
|
||||||
|
s.Require().Equal("no-store", rr.HeaderMap.Get("Cache-Control"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *HandlersSuite) TestHandleLinkPreviewThumbnail() {
|
||||||
previewURL := "https://github.com"
|
previewURL := "https://github.com"
|
||||||
|
defaultPayload := []byte{0xff, 0xd8, 0xff, 0xdb, 0x0, 0x84, 0x0, 0x50, 0x37, 0x3c, 0x46, 0x3c, 0x32, 0x50}
|
||||||
|
|
||||||
msg := common.Message{
|
msg := common.Message{
|
||||||
ID: "1",
|
ID: "1",
|
||||||
ChatMessage: &protobuf.ChatMessage{
|
ChatMessage: &protobuf.ChatMessage{
|
||||||
UnfurledLinks: []*protobuf.UnfurledLink{
|
UnfurledLinks: []*protobuf.UnfurledLink{
|
||||||
{
|
{
|
||||||
Type: protobuf.UnfurledLink_LINK,
|
Type: protobuf.UnfurledLink_LINK,
|
||||||
Url: previewURL,
|
Url: previewURL,
|
||||||
ThumbnailWidth: 100,
|
ThumbnailWidth: 100,
|
||||||
ThumbnailHeight: 200,
|
ThumbnailHeight: 200,
|
||||||
ThumbnailPayload: []byte{0xff, 0xd8, 0xff, 0xdb, 0x0, 0x84, 0x0, 0x50, 0x37, 0x3c, 0x46, 0x3c, 0x32, 0x50},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
createUserMessage(t, db, &msg)
|
s.saveUserMessage(&msg)
|
||||||
|
|
||||||
// Test happy path.
|
testCases := []struct {
|
||||||
reqURL := "/dummy?" + url.Values{"message-id": {msg.ID}, "url": {previewURL}}.Encode()
|
Name string
|
||||||
rr := httpGetReqRecorder(t, handleLinkPreviewThumbnail(db, logger), reqURL)
|
ExpectedHTTPStatusCode int
|
||||||
require.Equal(t, http.StatusOK, rr.Code)
|
ThumbnailPayload []byte
|
||||||
require.Equal(t, msg.UnfurledLinks[0].ThumbnailPayload, rr.Body.Bytes())
|
Parameters url.Values
|
||||||
require.Equal(t, "image/jpeg", rr.HeaderMap.Get("Content-Type"))
|
CheckFunc func(s *HandlersSuite, rr *httptest.ResponseRecorder)
|
||||||
require.Equal(t, "no-store", rr.HeaderMap.Get("Cache-Control"))
|
}{
|
||||||
|
{
|
||||||
|
Name: "Test happy path",
|
||||||
|
ExpectedHTTPStatusCode: http.StatusOK,
|
||||||
|
ThumbnailPayload: defaultPayload,
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {msg.ID},
|
||||||
|
"url": {previewURL},
|
||||||
|
},
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.verifyHTTPResponseThumbnail(rr, msg.UnfurledLinks[0].ThumbnailPayload)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test request with missing 'url' parameter",
|
||||||
|
ThumbnailPayload: defaultPayload,
|
||||||
|
ExpectedHTTPStatusCode: http.StatusBadRequest,
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {msg.ID},
|
||||||
|
},
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.Require().Equal("missing query parameter 'url'\n", rr.Body.String())
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test request with missing 'message-id' parameter",
|
||||||
|
ThumbnailPayload: defaultPayload,
|
||||||
|
ExpectedHTTPStatusCode: http.StatusBadRequest,
|
||||||
|
Parameters: url.Values{
|
||||||
|
"url": {previewURL},
|
||||||
|
},
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.Require().Equal("missing query parameter 'message-id'\n", rr.Body.String())
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test mime type not supported",
|
||||||
|
ThumbnailPayload: []byte("unsupported image"),
|
||||||
|
ExpectedHTTPStatusCode: http.StatusNotImplemented,
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {msg.ID},
|
||||||
|
"url": {previewURL},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
// Test bad requests.
|
handler := handleLinkPreviewThumbnail(s.db, s.logger)
|
||||||
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()
|
for _, tc := range testCases {
|
||||||
rr = httpGetReqRecorder(t, handleLinkPreviewThumbnail(db, logger), reqURL)
|
s.Run(tc.Name, func() {
|
||||||
require.Equal(t, http.StatusBadRequest, rr.Code)
|
msg.UnfurledLinks[0].ThumbnailPayload = tc.ThumbnailPayload
|
||||||
require.Equal(t, "missing query parameter 'message-id'\n", rr.Body.String())
|
s.saveUserMessage(&msg)
|
||||||
|
|
||||||
// Test mime type not supported.
|
requestURL := "/dummy?" + tc.Parameters.Encode()
|
||||||
msg.UnfurledLinks[0].ThumbnailPayload = []byte("unsupported image")
|
rr := s.httpGetReqRecorder(handler, requestURL)
|
||||||
createUserMessage(t, db, &msg)
|
s.Require().Equal(tc.ExpectedHTTPStatusCode, rr.Code)
|
||||||
reqURL = "/dummy?" + url.Values{"message-id": {msg.ID}, "url": {previewURL}}.Encode()
|
if tc.CheckFunc != nil {
|
||||||
rr = httpGetReqRecorder(t, handleLinkPreviewThumbnail(db, logger), reqURL)
|
tc.CheckFunc(s, rr)
|
||||||
require.Equal(t, http.StatusNotImplemented, rr.Code)
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *HandlersSuite) TestHandleStatusLinkPreviewThumbnail() {
|
||||||
|
contact := &protobuf.UnfurledStatusContactLink{
|
||||||
|
PublicKey: []byte("PublicKey_1"),
|
||||||
|
Icon: &protobuf.UnfurledLinkThumbnail{
|
||||||
|
Width: 10,
|
||||||
|
Height: 20,
|
||||||
|
Payload: []byte{0xff, 0xd8, 0xff, 0xdb, 0x0, 0x84, 0x0, 0x50, 0x37, 0x3c, 0x46, 0x3c, 0x32, 0x50},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
contactWithUnsupportedImage := &protobuf.UnfurledStatusContactLink{
|
||||||
|
PublicKey: []byte("PublicKey_2"),
|
||||||
|
Icon: &protobuf.UnfurledLinkThumbnail{
|
||||||
|
Width: 10,
|
||||||
|
Height: 20,
|
||||||
|
Payload: []byte("unsupported image"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
community := &protobuf.UnfurledStatusCommunityLink{
|
||||||
|
CommunityId: []byte("CommunityId_1"),
|
||||||
|
Icon: &protobuf.UnfurledLinkThumbnail{
|
||||||
|
Width: 30,
|
||||||
|
Height: 40,
|
||||||
|
Payload: []byte{0xff, 0xd8, 0xff, 0xdb, 0x0, 0x84, 0x0, 0x50, 0x37, 0x3c, 0x46, 0x3c, 0x32, 0x51},
|
||||||
|
},
|
||||||
|
Banner: &protobuf.UnfurledLinkThumbnail{
|
||||||
|
Width: 50,
|
||||||
|
Height: 60,
|
||||||
|
Payload: []byte{0xff, 0xd8, 0xff, 0xdb, 0x0, 0x84, 0x0, 0x50, 0x37, 0x3c, 0x46, 0x3c, 0x32, 0x52},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
channel := &protobuf.UnfurledStatusChannelLink{
|
||||||
|
ChannelUuid: []byte("ChannelUuid_1"),
|
||||||
|
Community: &protobuf.UnfurledStatusCommunityLink{
|
||||||
|
CommunityId: []byte("CommunityId_2"),
|
||||||
|
Icon: &protobuf.UnfurledLinkThumbnail{
|
||||||
|
Width: 70,
|
||||||
|
Height: 80,
|
||||||
|
Payload: []byte{0xff, 0xd8, 0xff, 0xdb, 0x0, 0x84, 0x0, 0x50, 0x37, 0x3c, 0x46, 0x3c, 0x32, 0x53},
|
||||||
|
},
|
||||||
|
Banner: &protobuf.UnfurledLinkThumbnail{
|
||||||
|
Width: 90,
|
||||||
|
Height: 100,
|
||||||
|
Payload: []byte{0xff, 0xd8, 0xff, 0xdb, 0x0, 0x84, 0x0, 0x50, 0x37, 0x3c, 0x46, 0x3c, 0x32, 0x54},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
unfurledContact := &protobuf.UnfurledStatusLink{
|
||||||
|
Url: "https://status.app/u/",
|
||||||
|
Payload: &protobuf.UnfurledStatusLink_Contact{
|
||||||
|
Contact: contact,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
unfurledContactWithUnsupportedImage := &protobuf.UnfurledStatusLink{
|
||||||
|
Url: "https://status.app/u/",
|
||||||
|
Payload: &protobuf.UnfurledStatusLink_Contact{
|
||||||
|
Contact: contactWithUnsupportedImage,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
unfurledCommunity := &protobuf.UnfurledStatusLink{
|
||||||
|
Url: "https://status.app/c/",
|
||||||
|
Payload: &protobuf.UnfurledStatusLink_Community{
|
||||||
|
Community: community,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
unfurledChannel := &protobuf.UnfurledStatusLink{
|
||||||
|
Url: "https://status.app/cc/",
|
||||||
|
Payload: &protobuf.UnfurledStatusLink_Channel{
|
||||||
|
Channel: channel,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
messageIDContactOnly = "1"
|
||||||
|
messageIDCommunityOnly = "2"
|
||||||
|
messageIDChannelOnly = "3"
|
||||||
|
messageIDAllLinks = "4"
|
||||||
|
messageIDUnsupportedImage = "5"
|
||||||
|
)
|
||||||
|
|
||||||
|
s.saveUserMessage(&common.Message{
|
||||||
|
ID: messageIDContactOnly,
|
||||||
|
ChatMessage: &protobuf.ChatMessage{
|
||||||
|
UnfurledStatusLinks: &protobuf.UnfurledStatusLinks{
|
||||||
|
UnfurledStatusLinks: []*protobuf.UnfurledStatusLink{
|
||||||
|
unfurledContact,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
s.saveUserMessage(&common.Message{
|
||||||
|
ID: messageIDCommunityOnly,
|
||||||
|
ChatMessage: &protobuf.ChatMessage{
|
||||||
|
UnfurledStatusLinks: &protobuf.UnfurledStatusLinks{
|
||||||
|
UnfurledStatusLinks: []*protobuf.UnfurledStatusLink{
|
||||||
|
unfurledCommunity,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
s.saveUserMessage(&common.Message{
|
||||||
|
ID: messageIDChannelOnly,
|
||||||
|
ChatMessage: &protobuf.ChatMessage{
|
||||||
|
UnfurledStatusLinks: &protobuf.UnfurledStatusLinks{
|
||||||
|
UnfurledStatusLinks: []*protobuf.UnfurledStatusLink{
|
||||||
|
unfurledChannel,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
s.saveUserMessage(&common.Message{
|
||||||
|
ID: messageIDAllLinks,
|
||||||
|
ChatMessage: &protobuf.ChatMessage{
|
||||||
|
UnfurledStatusLinks: &protobuf.UnfurledStatusLinks{
|
||||||
|
UnfurledStatusLinks: []*protobuf.UnfurledStatusLink{
|
||||||
|
unfurledContact,
|
||||||
|
unfurledCommunity,
|
||||||
|
unfurledChannel,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
s.saveUserMessage(&common.Message{
|
||||||
|
ID: messageIDUnsupportedImage,
|
||||||
|
ChatMessage: &protobuf.ChatMessage{
|
||||||
|
UnfurledStatusLinks: &protobuf.UnfurledStatusLinks{
|
||||||
|
UnfurledStatusLinks: []*protobuf.UnfurledStatusLink{
|
||||||
|
unfurledContactWithUnsupportedImage,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
testCases := []struct {
|
||||||
|
Name string
|
||||||
|
ExpectedHTTPStatusCode int
|
||||||
|
Parameters url.Values
|
||||||
|
CheckFunc func(s *HandlersSuite, rr *httptest.ResponseRecorder)
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
Name: "Test valid contact icon link",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDContactOnly},
|
||||||
|
"url": {unfurledContact.Url},
|
||||||
|
"image-id": {string(common.MediaServerContactIcon)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusOK,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.verifyHTTPResponseThumbnail(rr, unfurledContact.GetContact().Icon.Payload)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test invalid request for community icon in a contact link",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDContactOnly},
|
||||||
|
"url": {unfurledContact.Url},
|
||||||
|
"image-id": {string(common.MediaServerCommunityIcon)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusBadRequest,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.Require().Equal("invalid query parameter 'image-id' value: this is not a community link\n", rr.Body.String())
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test invalid request for cahnnel community banner in a contact link",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDContactOnly},
|
||||||
|
"url": {unfurledContact.Url},
|
||||||
|
"image-id": {string(common.MediaServerChannelCommunityBanner)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusBadRequest,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.Require().Equal("invalid query parameter 'image-id' value: this is not a community channel link\n", rr.Body.String())
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test invalid request for channel community banner in a contact link",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDContactOnly},
|
||||||
|
"url": {unfurledContact.Url},
|
||||||
|
"image-id": {"contact-banner"},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusBadRequest,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.Require().Equal("invalid query parameter 'image-id' value: value not supported\n", rr.Body.String())
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test valid community icon link",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDCommunityOnly},
|
||||||
|
"url": {unfurledCommunity.Url},
|
||||||
|
"image-id": {string(common.MediaServerCommunityIcon)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusOK,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.verifyHTTPResponseThumbnail(rr, unfurledCommunity.GetCommunity().Icon.Payload)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test valid community banner link",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDCommunityOnly},
|
||||||
|
"url": {unfurledCommunity.Url},
|
||||||
|
"image-id": {string(common.MediaServerCommunityBanner)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusOK,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.verifyHTTPResponseThumbnail(rr, unfurledCommunity.GetCommunity().Banner.Payload)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test valid channel community icon link",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDChannelOnly},
|
||||||
|
"url": {unfurledChannel.Url},
|
||||||
|
"image-id": {string(common.MediaServerChannelCommunityIcon)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusOK,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.verifyHTTPResponseThumbnail(rr, unfurledChannel.GetChannel().GetCommunity().Icon.Payload)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test valid channel community banner link",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDChannelOnly},
|
||||||
|
"url": {unfurledChannel.Url},
|
||||||
|
"image-id": {string(common.MediaServerChannelCommunityBanner)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusOK,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.verifyHTTPResponseThumbnail(rr, unfurledChannel.GetChannel().GetCommunity().Banner.Payload)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test valid contact icon link in a diverse message",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDAllLinks},
|
||||||
|
"url": {unfurledContact.Url},
|
||||||
|
"image-id": {string(common.MediaServerContactIcon)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusOK,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.verifyHTTPResponseThumbnail(rr, unfurledContact.GetContact().Icon.Payload)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test valid community icon link in a diverse message",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDAllLinks},
|
||||||
|
"url": {unfurledCommunity.Url},
|
||||||
|
"image-id": {string(common.MediaServerCommunityIcon)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusOK,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.verifyHTTPResponseThumbnail(rr, unfurledCommunity.GetCommunity().Icon.Payload)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test valid channel community icon link in a diverse message",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDAllLinks},
|
||||||
|
"url": {unfurledChannel.Url},
|
||||||
|
"image-id": {string(common.MediaServerChannelCommunityIcon)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusOK,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.verifyHTTPResponseThumbnail(rr, unfurledChannel.GetChannel().GetCommunity().Icon.Payload)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test mime type not supported",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDUnsupportedImage},
|
||||||
|
"url": {unfurledContactWithUnsupportedImage.Url},
|
||||||
|
"image-id": {string(common.MediaServerContactIcon)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusNotImplemented,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test request with missing 'message-id' parameter",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"url": {unfurledCommunity.Url},
|
||||||
|
"image-id": {string(common.MediaServerCommunityIcon)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusBadRequest,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.Require().Equal("missing query parameter 'message-id'\n", rr.Body.String())
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test request with missing 'url' parameter",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDCommunityOnly},
|
||||||
|
"image-id": {string(common.MediaServerCommunityIcon)},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusBadRequest,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.Require().Equal("missing query parameter 'url'\n", rr.Body.String())
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Test request with missing 'image-id' parameter",
|
||||||
|
Parameters: url.Values{
|
||||||
|
"message-id": {messageIDCommunityOnly},
|
||||||
|
"url": {unfurledCommunity.Url},
|
||||||
|
},
|
||||||
|
ExpectedHTTPStatusCode: http.StatusBadRequest,
|
||||||
|
CheckFunc: func(s *HandlersSuite, rr *httptest.ResponseRecorder) {
|
||||||
|
s.Require().Equal("missing query parameter 'image-id'\n", rr.Body.String())
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
handler := handleStatusLinkPreviewThumbnail(s.db, s.logger)
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
s.Run(tc.Name, func() {
|
||||||
|
requestURL := "/dummy?" + tc.Parameters.Encode()
|
||||||
|
|
||||||
|
rr := s.httpGetReqRecorder(handler, requestURL)
|
||||||
|
s.Require().Equal(tc.ExpectedHTTPStatusCode, rr.Code)
|
||||||
|
|
||||||
|
if tc.CheckFunc != nil {
|
||||||
|
tc.CheckFunc(s, rr)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"github.com/status-im/status-go/ipfs"
|
"github.com/status-im/status-go/ipfs"
|
||||||
"github.com/status-im/status-go/logutils"
|
"github.com/status-im/status-go/logutils"
|
||||||
"github.com/status-im/status-go/multiaccounts"
|
"github.com/status-im/status-go/multiaccounts"
|
||||||
|
"github.com/status-im/status-go/protocol/common"
|
||||||
"github.com/status-im/status-go/signal"
|
"github.com/status-im/status-go/signal"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -37,16 +38,17 @@ func NewMediaServer(db *sql.DB, downloader *ipfs.Downloader, multiaccountsDB *mu
|
||||||
multiaccountsDB: multiaccountsDB,
|
multiaccountsDB: multiaccountsDB,
|
||||||
}
|
}
|
||||||
s.SetHandlers(HandlerPatternMap{
|
s.SetHandlers(HandlerPatternMap{
|
||||||
accountImagesPath: handleAccountImages(s.multiaccountsDB, s.logger),
|
accountImagesPath: handleAccountImages(s.multiaccountsDB, s.logger),
|
||||||
accountInitialsPath: handleAccountInitials(s.multiaccountsDB, s.logger),
|
accountInitialsPath: handleAccountInitials(s.multiaccountsDB, s.logger),
|
||||||
audioPath: handleAudio(s.db, s.logger),
|
audioPath: handleAudio(s.db, s.logger),
|
||||||
contactImagesPath: handleContactImages(s.db, s.logger),
|
contactImagesPath: handleContactImages(s.db, s.logger),
|
||||||
discordAttachmentsPath: handleDiscordAttachment(s.db, s.logger),
|
discordAttachmentsPath: handleDiscordAttachment(s.db, s.logger),
|
||||||
discordAuthorsPath: handleDiscordAuthorAvatar(s.db, s.logger),
|
discordAuthorsPath: handleDiscordAuthorAvatar(s.db, s.logger),
|
||||||
generateQRCode: handleQRCodeGeneration(s.multiaccountsDB, s.logger),
|
generateQRCode: handleQRCodeGeneration(s.multiaccountsDB, s.logger),
|
||||||
imagesPath: handleImage(s.db, s.logger),
|
imagesPath: handleImage(s.db, s.logger),
|
||||||
ipfsPath: handleIPFS(s.downloader, s.logger),
|
ipfsPath: handleIPFS(s.downloader, s.logger),
|
||||||
LinkPreviewThumbnailPath: handleLinkPreviewThumbnail(s.db, s.logger),
|
LinkPreviewThumbnailPath: handleLinkPreviewThumbnail(s.db, s.logger),
|
||||||
|
StatusLinkPreviewThumbnailPath: handleStatusLinkPreviewThumbnail(s.db, s.logger),
|
||||||
})
|
})
|
||||||
|
|
||||||
return s, nil
|
return s, nil
|
||||||
|
@ -73,6 +75,13 @@ func (s *MediaServer) MakeLinkPreviewThumbnailURL(msgID string, previewURL strin
|
||||||
return u.String()
|
return u.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *MediaServer) MakeStatusLinkPreviewThumbnailURL(msgID string, previewURL string, imageID common.MediaServerImageID) string {
|
||||||
|
u := s.MakeBaseURL()
|
||||||
|
u.Path = StatusLinkPreviewThumbnailPath
|
||||||
|
u.RawQuery = url.Values{"message-id": {msgID}, "url": {previewURL}, "image-id": {string(imageID)}}.Encode()
|
||||||
|
return u.String()
|
||||||
|
}
|
||||||
|
|
||||||
func (s *MediaServer) MakeDiscordAuthorAvatarURL(authorID string) string {
|
func (s *MediaServer) MakeDiscordAuthorAvatarURL(authorID string) string {
|
||||||
u := s.MakeBaseURL()
|
u := s.MakeBaseURL()
|
||||||
u.Path = discordAuthorsPath
|
u.Path = discordAuthorsPath
|
||||||
|
|
|
@ -16,6 +16,7 @@ import (
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/status-im/status-go/images"
|
"github.com/status-im/status-go/images"
|
||||||
|
"github.com/status-im/status-go/protocol/common"
|
||||||
"github.com/status-im/status-go/server/servertest"
|
"github.com/status-im/status-go/server/servertest"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -116,6 +117,16 @@ func (s *ServerURLSuite) TestServer_MakeLinkPreviewThumbnailURL() {
|
||||||
s.serverNoPort.MakeLinkPreviewThumbnailURL("99", "https://github.com"))
|
s.serverNoPort.MakeLinkPreviewThumbnailURL("99", "https://github.com"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *ServerURLSuite) TestServer_MakeStatusLinkPreviewThumbnailURL() {
|
||||||
|
s.Require().Equal(
|
||||||
|
baseURLWithCustomPort+"/status-link-preview/thumbnail?image-id=contact-icon&message-id=99&url=https%3A%2F%2Fstatus.app",
|
||||||
|
s.server.MakeStatusLinkPreviewThumbnailURL("99", "https://status.app", common.MediaServerContactIcon))
|
||||||
|
|
||||||
|
s.testNoPort(
|
||||||
|
baseURLWithDefaultPort+"/status-link-preview/thumbnail?image-id=contact-icon&message-id=99&url=https%3A%2F%2Fstatus.app",
|
||||||
|
s.serverNoPort.MakeStatusLinkPreviewThumbnailURL("99", "https://status.app", common.MediaServerContactIcon))
|
||||||
|
}
|
||||||
|
|
||||||
func (s *ServerURLSuite) TestServer_MakeAudioURL() {
|
func (s *ServerURLSuite) TestServer_MakeAudioURL() {
|
||||||
s.Require().Equal(
|
s.Require().Equal(
|
||||||
baseURLWithCustomPort+"/messages/audio?messageId=0xde1e7ebee71e",
|
baseURLWithCustomPort+"/messages/audio?messageId=0xde1e7ebee71e",
|
||||||
|
|
|
@ -1166,7 +1166,7 @@ func (api *PublicAPI) GetTextURLs(text string) []string {
|
||||||
// be removed from the response.
|
// be removed from the response.
|
||||||
//
|
//
|
||||||
// This endpoint expects the client to send URLs normalized by GetTextURLs.
|
// This endpoint expects the client to send URLs normalized by GetTextURLs.
|
||||||
func (api *PublicAPI) UnfurlURLs(urls []string) ([]common.LinkPreview, error) {
|
func (api *PublicAPI) UnfurlURLs(urls []string) (protocol.UnfurlURLsResponse, error) {
|
||||||
return api.service.messenger.UnfurlURLs(nil, urls)
|
return api.service.messenger.UnfurlURLs(nil, urls)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -104,7 +104,7 @@ func emojisTxt() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "emojis.txt", size: 28134, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "emojis.txt", size: 28134, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ func ConfigReadmeMd() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/README.md", size: 3031, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "../config/README.md", size: 3031, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -144,7 +144,7 @@ func ConfigCliAnonMetricNodeClientJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/cli/anon-metric-node-client.json", size: 857, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "../config/cli/anon-metric-node-client.json", size: 857, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,7 @@ func ConfigCliAnonMetricNodeServerJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/cli/anon-metric-node-server.json", size: 696, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "../config/cli/anon-metric-node-server.json", size: 696, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -184,7 +184,7 @@ func ConfigCliFleetEthProdJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/cli/fleet-eth.prod.json", size: 3619, mode: os.FileMode(0664), modTime: time.Unix(1685365190, 0)}
|
info := bindataFileInfo{name: "../config/cli/fleet-eth.prod.json", size: 3619, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x92, 0x4f, 0x86, 0x8b, 0x6e, 0x2, 0x27, 0xa3, 0x37, 0x27, 0x74, 0x51, 0xf0, 0x97, 0x5b, 0x64, 0x8e, 0xbd, 0x29, 0xba, 0x75, 0x2d, 0x75, 0x78, 0x46, 0xb9, 0x56, 0x6, 0xb1, 0xf9, 0x85, 0xdd}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x92, 0x4f, 0x86, 0x8b, 0x6e, 0x2, 0x27, 0xa3, 0x37, 0x27, 0x74, 0x51, 0xf0, 0x97, 0x5b, 0x64, 0x8e, 0xbd, 0x29, 0xba, 0x75, 0x2d, 0x75, 0x78, 0x46, 0xb9, 0x56, 0x6, 0xb1, 0xf9, 0x85, 0xdd}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ func ConfigCliFleetEthStagingJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/cli/fleet-eth.staging.json", size: 2139, mode: os.FileMode(0664), modTime: time.Unix(1685365190, 0)}
|
info := bindataFileInfo{name: "../config/cli/fleet-eth.staging.json", size: 2139, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb0, 0xac, 0xc9, 0x61, 0x97, 0x42, 0x0, 0x3a, 0xfc, 0x78, 0x11, 0xa1, 0xc7, 0x55, 0x71, 0x46, 0x72, 0x3e, 0x52, 0xb0, 0x89, 0x69, 0x7f, 0x8f, 0xf1, 0x26, 0x44, 0xc5, 0xfc, 0x20, 0x9f, 0xa1}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb0, 0xac, 0xc9, 0x61, 0x97, 0x42, 0x0, 0x3a, 0xfc, 0x78, 0x11, 0xa1, 0xc7, 0x55, 0x71, 0x46, 0x72, 0x3e, 0x52, 0xb0, 0x89, 0x69, 0x7f, 0x8f, 0xf1, 0x26, 0x44, 0xc5, 0xfc, 0x20, 0x9f, 0xa1}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -224,7 +224,7 @@ func ConfigCliFleetShardsTestJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/cli/fleet-shards.test.json", size: 1954, mode: os.FileMode(0664), modTime: time.Unix(1696363813, 0)}
|
info := bindataFileInfo{name: "../config/cli/fleet-shards.test.json", size: 1954, mode: os.FileMode(0644), modTime: time.Unix(1697196255, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcf, 0xeb, 0x33, 0xd4, 0x3, 0x54, 0xff, 0xda, 0x1f, 0xc4, 0xc, 0x91, 0x88, 0x1e, 0x53, 0xbf, 0x49, 0xa, 0x6c, 0x45, 0xf9, 0x19, 0x91, 0xec, 0xe, 0x1a, 0xfc, 0x14, 0x86, 0x8d, 0xa3, 0x5a}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcf, 0xeb, 0x33, 0xd4, 0x3, 0x54, 0xff, 0xda, 0x1f, 0xc4, 0xc, 0x91, 0x88, 0x1e, 0x53, 0xbf, 0x49, 0xa, 0x6c, 0x45, 0xf9, 0x19, 0x91, 0xec, 0xe, 0x1a, 0xfc, 0x14, 0x86, 0x8d, 0xa3, 0x5a}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -244,7 +244,7 @@ func ConfigCliFleetStatusProdJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/cli/fleet-status.prod.json", size: 2338, mode: os.FileMode(0664), modTime: time.Unix(1685365190, 0)}
|
info := bindataFileInfo{name: "../config/cli/fleet-status.prod.json", size: 2338, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x59, 0xea, 0x14, 0x57, 0xed, 0x60, 0x4d, 0xb6, 0x32, 0x7e, 0xd3, 0xbe, 0x1e, 0xc7, 0xfe, 0x42, 0xee, 0xfe, 0x10, 0xe4, 0x22, 0x64, 0xc1, 0xb9, 0xce, 0x34, 0xcd, 0xdd, 0xe3, 0x38, 0x43, 0xd3}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x59, 0xea, 0x14, 0x57, 0xed, 0x60, 0x4d, 0xb6, 0x32, 0x7e, 0xd3, 0xbe, 0x1e, 0xc7, 0xfe, 0x42, 0xee, 0xfe, 0x10, 0xe4, 0x22, 0x64, 0xc1, 0xb9, 0xce, 0x34, 0xcd, 0xdd, 0xe3, 0x38, 0x43, 0xd3}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -264,7 +264,7 @@ func ConfigCliFleetStatusTestJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/cli/fleet-status.test.json", size: 1457, mode: os.FileMode(0664), modTime: time.Unix(1685365190, 0)}
|
info := bindataFileInfo{name: "../config/cli/fleet-status.test.json", size: 1457, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x9f, 0x8f, 0x25, 0x1f, 0x31, 0xbd, 0x72, 0x26, 0xb7, 0xd, 0x7e, 0xcb, 0xbb, 0x12, 0xef, 0x9f, 0x1a, 0x2e, 0xb, 0x96, 0x64, 0x7d, 0x52, 0x9e, 0x68, 0x13, 0x55, 0xd5, 0x88, 0x38, 0x7b}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x9f, 0x8f, 0x25, 0x1f, 0x31, 0xbd, 0x72, 0x26, 0xb7, 0xd, 0x7e, 0xcb, 0xbb, 0x12, 0xef, 0x9f, 0x1a, 0x2e, 0xb, 0x96, 0x64, 0x7d, 0x52, 0x9e, 0x68, 0x13, 0x55, 0xd5, 0x88, 0x38, 0x7b}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -284,7 +284,7 @@ func ConfigCliFleetWakuv2ProdJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.prod.json", size: 1264, mode: os.FileMode(0664), modTime: time.Unix(1685365190, 0)}
|
info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.prod.json", size: 1264, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0xb9, 0x1c, 0x57, 0x50, 0xa9, 0x93, 0x70, 0xcd, 0xd7, 0x22, 0xee, 0x65, 0x72, 0x11, 0x71, 0xd3, 0x20, 0xd0, 0xf0, 0x4d, 0x53, 0x94, 0x44, 0x81, 0xbd, 0x11, 0xed, 0x5e, 0x72, 0x0, 0x12}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0xb9, 0x1c, 0x57, 0x50, 0xa9, 0x93, 0x70, 0xcd, 0xd7, 0x22, 0xee, 0x65, 0x72, 0x11, 0x71, 0xd3, 0x20, 0xd0, 0xf0, 0x4d, 0x53, 0x94, 0x44, 0x81, 0xbd, 0x11, 0xed, 0x5e, 0x72, 0x0, 0x12}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -304,7 +304,7 @@ func ConfigCliFleetWakuv2TestJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.test.json", size: 1264, mode: os.FileMode(0664), modTime: time.Unix(1685365190, 0)}
|
info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.test.json", size: 1264, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2c, 0x67, 0x1e, 0xd1, 0x98, 0x7b, 0xf3, 0x9f, 0x76, 0xa0, 0xbe, 0x67, 0x29, 0xdb, 0xd7, 0x3e, 0xb8, 0x7c, 0x65, 0x2d, 0x2, 0x84, 0xe0, 0xab, 0x8d, 0x3d, 0x4a, 0x53, 0xb4, 0xa7, 0x2e, 0xf0}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2c, 0x67, 0x1e, 0xd1, 0x98, 0x7b, 0xf3, 0x9f, 0x76, 0xa0, 0xbe, 0x67, 0x29, 0xdb, 0xd7, 0x3e, 0xb8, 0x7c, 0x65, 0x2d, 0x2, 0x84, 0xe0, 0xab, 0x8d, 0x3d, 0x4a, 0x53, 0xb4, 0xa7, 0x2e, 0xf0}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -324,7 +324,7 @@ func ConfigCliLesEnabledJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/cli/les-enabled.json", size: 58, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "../config/cli/les-enabled.json", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -344,7 +344,7 @@ func ConfigCliMailserverEnabledJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/cli/mailserver-enabled.json", size: 176, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "../config/cli/mailserver-enabled.json", size: 176, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -364,7 +364,7 @@ func ConfigStatusChainGenesisJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "../config/status-chain-genesis.json", size: 612, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "../config/status-chain-genesis.json", size: 612, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -384,7 +384,7 @@ func keysBootnodeKey() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -404,7 +404,7 @@ func keysFirebaseauthkey() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -424,7 +424,7 @@ func keysTestAccount1StatusChainPk() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -444,7 +444,7 @@ func keysTestAccount1Pk() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -464,7 +464,7 @@ func keysTestAccount2StatusChainPk() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -484,7 +484,7 @@ func keysTestAccount2Pk() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -504,7 +504,7 @@ func keysTestAccount3BeforeEip55Pk() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ func configPublicChainAccountsJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "config/public-chain-accounts.json", size: 307, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "config/public-chain-accounts.json", size: 307, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -106,7 +106,7 @@ func configStatusChainAccountsJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "config/status-chain-accounts.json", size: 543, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "config/status-chain-accounts.json", size: 543, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ func configTestDataJson() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "config/test-data.json", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "config/test-data.json", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1697059193, 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}}
|
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
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue