ActivityPub 插件

感谢您的辛勤工作!我非常期待启用此功能,并感谢您发布此测试版本,以便我们这些拥有各种设置的用户能够为更广泛的场景提供测试支持。

在考虑何时为我的网站启用此功能时,我正在思考可能存在的“单向门”。

子类别

我有 8 个顶级类别,此外还有 21 个公共子类别。需要关注 29 个参与者才能关注所有公共网站活动,这似乎有点多。此外,用户可能会惊讶地发现,关注一个类别并不包括关注其子类别。

如果我能在类别 ActivityPub 设置中选择“也联合发布公共子类别”选项,我会这样做的。从用户的角度来看,单独联合发布子类别似乎主要是一个单向门。因此,如果您能考虑一个“也联合发布子类别”的选项,这可能会影响我的计划。我们的默认侧边栏仅显示顶级类别,而 Discourse 在查看它们时的默认设置是所有顶级和子类别内容一起显示,这似乎与 Discourse 的预期相当一致。

联合发布所有内容!

我认为,为联合发布网站上所有公共帖子的 ActivityPub 参与者添加一个全站范围的设置可能会很有趣。我自己也会使用它。但我不认为这是一个单向门——一旦类别联合发布功能准备就绪,我就会立即设置它,即使我以后会添加一个“all@”参与者来联合发布所有内容。

编辑限制

您的帖子中不明显的一点是,可以理解为只有字面上的 [note]...[/note] 部分无法编辑。对于这里的其他人来说,它真正的意思是,一旦帖子被联合发布,编辑将暂时禁用所有帖子(除了那些包含字面 [note]...[/note] 部分的帖子);只有当您尝试保存您的编辑时,才会显示此消息:

我的网站有意允许足够受信任的用户无限期编辑,因此在无法禁用此控件(或因联合发布编辑而移除控件)的情况下,我无法启用此功能。作为一个适用于信任网站之外的通用示例,任何具有 wiki 模式帖子的类别都会因设置该类别的联合发布而损坏。

我尝试删除一个我设为 wiki 的已联合发布的帖子,然后看到了这个:

但是,该帖子已被删除,并且删除操作已联合发布。

个性化

为每个指定的参与者提供一个头像会很好。在 Mastodon 中,我只能看到每个类别参与者的灰色大象图片,我很想在这里添加一点个性。:smiling_face:

错误日志

到目前为止,我在日志中从 activitypub 插件中收到了两种类型的错误:

Message (3 copies reported)

NoMethodError (undefined method `ap_type' for nil:NilClass)
(eval):7:in `_fast_attributes'
app/controllers/application_controller.rb:418:in `block in with_resolved_locale'
app/controllers/application_controller.rb:418:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:367:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'

Backtrace

plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:18:in `object'
plugins/discourse-activity-pub/app/serializers/discourse_activity_pub/ap/activity_serializer.rb:18:in `_object'
plugins/discourse-activity-pub/app/serializers/discourse_activity_pub/ap/activity_serializer.rb:9:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:347:in `as_json'
plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/object.rb:50:in `json'
plugins/discourse-activity-pub/app/serializers/discourse_activity_pub/ap/collection/ordered_collection_serializer.rb:7:in `map'
plugins/discourse-activity-pub/app/serializers/discourse_activity_pub/ap/collection/ordered_collection_serializer.rb:7:in `ordered_items'
(eval):7:in `_fast_attributes'
Message

Job exception: undefined method `model' for #<DiscourseActivityPubActivity id: 2, ap_id: "https://social.makerforums.info/cf2e1e8d-83e3-447e...", ap_key: nil, ap_type: "Follow", local: nil, actor_id: 3, object_id: "1", object_type: "DiscourseActivityPubActor", summary: nil, published_at: nil, created_at: "2023-06-01 02:23:13.798564000 +0000", updated_at: "2023-06-01 02:23:13.798564000 +0000">


Backtrace

/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activemodel-7.0.4.3/lib/active_model/attribute_methods.rb:458:in `method_missing'
/var/www/discourse/plugins/discourse-activity-pub/app/models/discourse_activity_pub_activity.rb:79:in `after_deliver'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_deliver.rb:42:in `perform_request'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_deliver.rb:13:in `execute'
/var/www/discourse/app/jobs/base.rb:249:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-5.0.0/lib/rails_multisite/connection_management.rb:82:in `with_connection'
/var/www/discourse/app/jobs/base.rb:236:in `block in perform'
/var/www/discourse/app/jobs/base.rb:232:in `each'
/var/www/discourse/app/jobs/base.rb:232:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/sidekiq-6.5.9/lib/sidekiq/processor.rb:202:in `execute_job'

再次感谢您的工作!

8 个赞