New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/Add the file block #51
Conversation
PRありがとうございます! ファイルブロックの対応で一つ懸念なのが、ビルド時にURLを取得したとしてもいずれ期限が来てしまうことなんですよね。 ファイルの種類がわかれば画像ブロックでやっているようにデータURIスキームを使ってページに埋め込んでしまうことで回避できるのですが、Notion APIの定義を見る限りファイルの種類が何かというのはわからないみたいなんです(ファイル名の拡張子を見ればというのもありますが偽装することも可能なので)。 NotionにはPDFブロックがあるので、これらを踏まえてPDFファイルのみデータURIスキームで対応するというのが良さそうな落し所かなと思っています。 |
と思ったのですが、もしかしたらS3のファイルをfetchしたときにそのレスポンスヘッダのContent-Typeを見るとわかるかもしれませんね。 |
ビルドの前処理でファイルブロックのファイルを public/ 以下の適当なディレクトリにダウンロードしてしまうという方法を思いつきました。 |
ご検討ありがとうございました!色々と立ちはだかっているのですね、難しいです。汗 Astro2.0からはハイブリッドレンダリングも可能なので、エンドポイントではSSRを有効にしつつ(他の全てのページはSSGにして)、「CAPTCHA(キャプチャ)の検証」のような形で動的にURLを取得できないかなとも考えています。 |
これすごく良いアイデアですね!ビルド時間も長くならないですし、ファイルのダウンロードリンクを押したときに裏でAPI通信をして多少時間がかかったとしてもユーザー体験的には問題にならないと思うので、この方向で実現できるようにちょっとspec書いてみようと思います! そしてタイミング良いことにastro-notion-blogのバージョン0.3ブランチはすでにAstro 2.0にしてあります! |
} | ||
} | ||
|
||
export interface External { | ||
Url: string | ||
ExpiryTime?: string |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://developers.notion.com/reference/file-object
type: external の場合は expiry_time 持たなそうです。
ご対応ありがとうございます!specばっちりかと思います🚀 |
@trickstar13 ご確認ありがとうございます!承知しました。では私の方で進めます〜 🙏 |
先ほどはファイル期限についてアドバイスいただきありがとうございました🙏
Fileブロックを表示できるようにしました。
Notionのネイティブアプリのように、ファイル名をクリックでダウンロードさせたかったのですが、ウェブでは同一ドメイン間でないとダウンロードさせられない仕様とのことで、ファイル名をクリックすると別窓でリンク先のファイルが開きます。
アイコンは絵文字で対応しました。
もし今後、Notionの純正のIcons↓等に対応するようでしたら(できるのかは謎です・汗)、そのバリエーションからもっと適切なアイコンに差し替えても良いと思います。