Add support for creating and federating direct messages

master
teknomunk 10 months ago
parent 8b3cd8136f
commit 6b5a5921e1

@ -148,6 +148,11 @@ bool handle_post( struct http_request* req, struct account* a )
s->published = time(NULL);
s->source = strdup( params.status );
if( 0 == strcmp( "direct", params.visibility ) ) {
s->visibility = status_visibility_direct;
}
status_save_new(s);
char key[32];

@ -291,8 +291,15 @@ struct ap_object* activity_create_Note( struct status* s )
act->attributed_to = strdup( a->account_url );
account_free(a);
}
char* str = strdup("https://www.w3.org/ns/activitystreams#Public");
array_append( &act->to, sizeof(str), &str );
char* str = NULL;
switch( s->visibility ) {
case status_visibility_public:
{
str = strdup("https://www.w3.org/ns/activitystreams#Public");
array_append( &act->to, sizeof(str), &str );
}; break;
}
for( int i = 0; i < s->media2.count; ++i ) {
struct media* m = s->media2.items[i];

@ -302,6 +302,19 @@ bool status_sync_from_activity_pub( struct status* s, struct ap_object* act )
goto failed;
}
bool is_public = false;
for( int i = 0; i < act->to.count; ++i ) {
if( 0 == strcmp( act->to.items[i], "https://www.w3.org/ns/activitystreams#Public" ) ) {
is_public = true;
}
}
if( is_public ) {
s->visibility = status_visibility_public;
} else {
s->visibility = status_visibility_direct;
}
s->account_id = a->id;
s->published = act->published;
s->remote = true;

Loading…
Cancel
Save