Replace avatar/banner in ap_object with icon/image, fix bug refetching accounts (not initializing filename)

master
teknomunk 1 year ago
parent 77fbd2505d
commit 03ed44d809

@ -1 +1 @@
Subproject commit 9b6e7725a6356f2a6e776dde60c18201a82d6f88
Subproject commit 5b82f627e029f669d08ea6341e095a3019e75cf6

@ -298,6 +298,7 @@ struct account* account_fetch_from_uri( const char* uri )
// Fetch the ActivityPub actor data if we don't already have it
char filename[512];
snprintf( filename,sizeof(filename), "data/accounts/%d/ap.json", account_id );
struct stat s;
bool fetch_attempted = false;
if( !stat( filename, &s ) || ( time(NULL) - s.st_mtime > 60*60*24*3 ) ) {
@ -305,7 +306,7 @@ struct account* account_fetch_from_uri( const char* uri )
fetch_attempted = true;
}
FILE* f = fopen( format( filename, 512, "data/accounts/%d/ap.json", account_id ), "r" );
FILE* f = fopen( filename, "r" );
if( !f ) {
if( a && a->stub && ( time(NULL) < a->next_stub_recheck ) ) { goto next; }
if( !fetch_attempted && pull_remote_file( filename, uri ) ) { goto next; }

@ -45,8 +45,18 @@ struct ap_object* account_ap_actor( struct account* a )
act->featured = aformat("https://%s/owner/collections/featured", g_server->domain );
act->followers = aformat("https://%s/owner/followers", g_server->domain);
act->following = aformat("https://%s/owner/following", g_server->domain);
act->avatar = aformat( "https://%s/owner/avatar.blob", g_server->domain );
act->banner = aformat( "https://%s/owner/banner.blob", g_server->domain );
struct ap_object* avatar = ap_object_new();
avatar->type = ap_Image;
avatar->url = aformat( "https://%s/owner/avatar.blob", g_server->domain );
act->icon = avatar;
struct ap_object* banner = ap_object_new();
banner->type = ap_Image;
banner->url = aformat( "https://%s/owner/banner.blob", g_server->domain );
act->image = banner;
act->url = aformat( "https://%s/@%s@%s", g_server->domain, a->handle, g_server->domain );
act->capabilities.show = true;

@ -61,12 +61,12 @@ bool account_sync_from_activity_pub( unsigned int account_id )
} else {
a->display_name = strdup(obj->preferred_username);
}
if( obj->avatar ) {
a->avatar.url = strdup(obj->avatar);
a->avatar.static_url = strdup(obj->avatar);
if( obj->icon && obj->icon->url ) {
a->avatar.url = strdup(obj->icon->url);
a->avatar.static_url = strdup(a->avatar.url);
}
if( obj->banner ) {
a->banner = strdup(obj->banner);
if( obj->image && obj->image->url ) {
a->banner = strdup(obj->image->url);
}
a->bot = ( obj->type != ap_Person );
a->account_type = at_remote_activity_pub;

Loading…
Cancel
Save