ブロック機能検証
所管
PDS単体でブロック機能を成立させている
連携時にどうするかは連携機能実装時まで不明
Lexiconの変更
app.bsky.actor.defs
ユーザー情報を取得するNSID
viewerState に "blockedBy": { "type": "boolean" } と "blocking": { "type": "string", "format": "at-uri"}" が追加
コンテンツは見えないが、少なくとも被ブロックはレスポンスからわかる状態?
app.bsky.embed.record
別のコンテンツに埋め込まれる際のレコード(images, external, record, recordWithMedia)を定義しているNSID
view.properties.record.refsに "#viewBlocked" が追加
viewBlockedは以下のように定義されている
code:json
"viewBlocked": {
"type": "object",
"properties": {
"uri": {"type": "string", "format": "at-uri"}
}
}
コンテンツは見えないが、ブロックされていることはわかるようになるっぽい
app.bsky.feed.defs
feedを定義しているNSID
threadViewPost.properties.parent と threadViewPost.properties.replies.items に "#blockedPost" が追加
blockedPostは以下のように定義されている
code:json
"blockedPost": {
"type": "object",
"properties": {
"uri": {"type": "string", "format": "at-uri"},
"blocked": {"type": "boolean", "const": true}
}
}
こちらもコンテンツは見えないが、ブロックされていることがわかるようになっている模様
app.bsky.feed.getAuthorFeed
ユーザーのプロフィールを開いた際のTL(Feed)を定義しているNSID
defs.mainに"errors": [ { "name": "BlockedActor" }, { "name": "BlockedByActor" } ]が追加
エラーでそもそも見えなくなるが、ブロックしている/されているはわかる状態
app.bsky.feed.getPostThread
投稿のスレッド表示用NSID
defs.main.output.schema.properties.thread.refsに "app.bsky.feed.defs#blockedPost"が追加
こちらもコンテンツが見えない代わりにブロック用のレスポンスが定義されている模様
(New!) app.bsky.graph.block
ブロックしている状態自体を表すレコードを定義しているNSID
ここにlist, get, create, deleteすることでブロックの関係性を取得したり変更したりする
code:json
{
"lexicon": 1,
"id": "app.bsky.graph.block",
"defs": {
"main": {
"type": "record",
"description": "A block.",
"key": "tid",
"record": {
"type": "object",
"properties": {
"subject": {"type": "string", "format": "did"},
"createdAt": {"type": "string", "format": "datetime"}
}
}
}
}
}
(New!) app.bsky.graph.getBlocks
自分?がブロックしているユーザーの一覧取得NSID
code:json
{
"lexicon": 1,
"id": "app.bsky.graph.getBlocks",
"defs": {
"main": {
"type": "query",
"description": "Who is the requester's account blocking?",
"parameters": {
"type": "params",
"properties": {
"limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50},
"cursor": {"type": "string"}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"properties": {
"cursor": {"type": "string"},
"blocks": {
"type": "array",
"items": {"type": "ref", "ref": "app.bsky.actor.defs#profileView"}
}
}
}
}
}
}
}
PDSの変更
今回のコミットで変更されたAPI
大体はDBへのクエリに「リクエストした者のブロック対象/被対象に含まれないこと」が追加されている
app.bsky.actor.getSuggestions
検索ページ開いた時に出てくるユーザー一覧を取得しているAPI
app.bsky.actor.searchActors
ユーザー検索
app.bsky.actor.searchActorsTypeahead
ユーザー検索?
app.bsky.feed.getAuthorFeed
あるユーザーのタイムラインを取得, 除外ではなくエラーが表示される
app.bsky.feed.getLikes
feedに対するLikeの取得
app.bsky.feed.getPostThread
投稿のスレッドを取得。通常のレスポンスの代わりにブロックされている旨のレスポンスが返ってくる
app.bsky.feed.getRepostBy
ある投稿に対するリポストの取得
app.bsky.feed.getTimeline
タイムラインの取得
(New!) app.bsky.graph.getBlocks
自分がブロックしているユーザーの一覧。他のユーザー設定項目と同じくctx.AccessVerifierで認証しているので他人が見ることはできない
app.bsky.graph.getFollowers
自分のフォロワー一覧。ブロックしている場合は表示されなくなるだけでDBにはレコードが残っている
app.bsky.graph.getFollows
フォロー一覧。ブロックしている場合は表示されなくなるだけでDBにはレコードが残っている
app.bsky.notification.listNotifications
通知一覧
app.bsky.unspecced
なにこれ?