feat(client): fileId and uniqueFileId fields for Thumbnail
This commit is contained in:
parent
d3b320eea0
commit
c0b72018fb
3 changed files with 64 additions and 7 deletions
|
@ -13,6 +13,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@mtcute/tl": "^0.0.0",
|
||||
"@mtcute/core": "^0.0.0"
|
||||
"@mtcute/core": "^0.0.0",
|
||||
"@mtcute/file-id": "^0.0.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { tl } from '@mtcute/tl'
|
||||
import { FileLocation } from '../files/file-location'
|
||||
import { FileLocation } from '../files'
|
||||
import { TelegramClient } from '../../client'
|
||||
import { MtCuteArgumentError } from '../errors'
|
||||
import { Thumbnail } from './thumbnail'
|
||||
|
@ -119,8 +119,8 @@ export class Photo extends FileLocation {
|
|||
_: 'inputPhoto',
|
||||
id: this.raw.id,
|
||||
accessHash: this.raw.accessHash,
|
||||
fileReference: this.raw.fileReference
|
||||
}
|
||||
fileReference: this.raw.fileReference,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -133,7 +133,7 @@ export class Photo extends FileLocation {
|
|||
// type is only really used for creating tl.InputMedia,
|
||||
// but since we are providing it directly, we can use `auto`
|
||||
type: 'auto',
|
||||
file: this.inputMediaTl
|
||||
file: this.inputMediaTl,
|
||||
// other fields are not needed since it's a forwarded media
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
import { TelegramClient } from '../../client'
|
||||
import { FileLocation } from '../files/file-location'
|
||||
import { FileLocation } from '../files'
|
||||
import { tl } from '@mtcute/tl'
|
||||
import {
|
||||
inflateSvgPath,
|
||||
strippedPhotoToJpg,
|
||||
svgPathToFile,
|
||||
} from '../../utils/file-utils'
|
||||
import { MtCuteTypeAssertionError } from '../errors'
|
||||
import { MtCuteArgumentError, MtCuteTypeAssertionError } from '../errors'
|
||||
import { assertTypeIs } from '../../utils/type-assertion'
|
||||
import { makeInspectable } from '../utils'
|
||||
import { tdFileId as td, toFileId, toUniqueFileId } from '@mtcute/file-id'
|
||||
|
||||
/**
|
||||
* One size of some thumbnail
|
||||
|
@ -54,6 +55,7 @@ export class Thumbnail extends FileLocation {
|
|||
readonly height: number
|
||||
|
||||
private _path?: string
|
||||
private _media: tl.RawPhoto | tl.RawDocument
|
||||
|
||||
constructor(
|
||||
client: TelegramClient,
|
||||
|
@ -102,6 +104,7 @@ export class Thumbnail extends FileLocation {
|
|||
this.raw = sz
|
||||
this.width = width
|
||||
this.height = height
|
||||
this._media = media
|
||||
|
||||
if (sz._ === 'photoPathSize') {
|
||||
this._path = inflateSvgPath(sz.bytes)
|
||||
|
@ -130,6 +133,59 @@ export class Thumbnail extends FileLocation {
|
|||
|
||||
return this._path!
|
||||
}
|
||||
|
||||
private _fileId?: string
|
||||
/**
|
||||
* Get TDLib and Bot API compatible File ID
|
||||
* representing this thumbnail.
|
||||
*/
|
||||
get fileId(): string {
|
||||
if (!this._fileId) {
|
||||
if (this.raw._ !== 'photoSize' && this.raw._ !== 'photoSizeProgressive') {
|
||||
throw new MtCuteArgumentError(`Cannot generate a file ID for "${this.raw.type}"`)
|
||||
}
|
||||
|
||||
this._fileId = toFileId({
|
||||
type: this._media._ === 'photo' ? td.FileType.Photo : td.FileType.Thumbnail,
|
||||
dcId: this.dcId,
|
||||
fileReference: this._media.fileReference,
|
||||
location: {
|
||||
_: 'photo',
|
||||
id: this._media.id,
|
||||
accessHash: this._media.accessHash,
|
||||
volumeId: this.raw.location.volumeId,
|
||||
localId: this.raw.location.localId,
|
||||
source: {
|
||||
_: 'thumbnail',
|
||||
fileType: td.FileType.Photo,
|
||||
thumbnailType: this.raw.type,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
return this._fileId
|
||||
}
|
||||
|
||||
private _uniqueFileId?: string
|
||||
/**
|
||||
* Get a unique File ID representing this thumbnail.
|
||||
*/
|
||||
get uniqueFileId(): string {
|
||||
if (!this._uniqueFileId) {
|
||||
if (this.raw._ !== 'photoSize' && this.raw._ !== 'photoSizeProgressive') {
|
||||
throw new MtCuteArgumentError(`Cannot generate a unique file ID for "${this.raw.type}"`)
|
||||
}
|
||||
|
||||
this._uniqueFileId = toUniqueFileId(td.FileType.Photo, {
|
||||
_: 'photo',
|
||||
volumeId: this.raw.location.volumeId,
|
||||
localId: this.raw.location.localId
|
||||
})
|
||||
}
|
||||
|
||||
return this._uniqueFileId
|
||||
}
|
||||
}
|
||||
|
||||
makeInspectable(Thumbnail, ['fileSize', 'dcId', 'width', 'height'], ['path'])
|
||||
|
|
Loading…
Reference in a new issue