diff --git a/apps/ssb.json b/apps/ssb.json index d77ba487..692e1c33 100644 --- a/apps/ssb.json +++ b/apps/ssb.json @@ -1,5 +1,5 @@ { "type": "tildefriends-app", "emoji": "🐌", - "previous": "&Cqu8pxYxC8fBQuUpa3z2kVnX5cqbQ+p5mhqySZwWwb4=.sha256" + "previous": "&VCGjLxXNz7S8jDYM0HK+GfHsLujtIRiwYQcIGo5Y9+A=.sha256" } diff --git a/apps/ssb/tf-app.js b/apps/ssb/tf-app.js index 30a58bbb..75d3fab8 100644 --- a/apps/ssb/tf-app.js +++ b/apps/ssb/tf-app.js @@ -221,7 +221,7 @@ class TfElement extends LitElement { async load() { let whoami = this.whoami; let tags = this.load_recent_tags(); - let following = await tfrpc.rpc.following([whoami], 2); + let following = await tfrpc.rpc.following([whoami], 3); let users = {}; let by_count = []; for (let [id, v] of Object.entries(following)) { diff --git a/src/ssb.js.c b/src/ssb.js.c index 425e0cd6..382665bc 100644 --- a/src/ssb.js.c +++ b/src/ssb.js.c @@ -2341,7 +2341,7 @@ typedef struct _following_t static void _tf_ssb_following_work(tf_ssb_t* ssb, void* user_data) { following_t* following = user_data; - following->out_following = tf_ssb_db_following_deep(ssb, following->ids, following->ids_count, following->depth); + following->out_following = tf_ssb_db_following_deep(ssb, following->ids, following->ids_count, following->depth - 1); } static void _tf_ssb_following_after_work(tf_ssb_t* ssb, int status, void* user_data) diff --git a/src/ssb.rpc.c b/src/ssb.rpc.c index 37486eba..52b1b482 100644 --- a/src/ssb.rpc.c +++ b/src/ssb.rpc.c @@ -978,8 +978,10 @@ static void _tf_ssb_rpc_ebt_replicate_send_clock_work(tf_ssb_connection_t* conne tf_ssb_t* ssb = tf_ssb_connection_get_ssb(connection); JSValue full_clock = JS_NewObject(context); + int64_t depth = _get_global_setting_int64(ssb, "replication_hops", -1); + /* Ask for every identity we know is being followed from local accounts. */ - const char** visible = tf_ssb_db_get_all_visible_identities(ssb, 2); + const char** visible = tf_ssb_db_get_all_visible_identities(ssb, depth - 1); for (int i = 0; visible[i]; i++) { int64_t sequence = 0; diff --git a/src/util.js.c b/src/util.js.c index bd701268..4d082f90 100644 --- a/src/util.js.c +++ b/src/util.js.c @@ -350,6 +350,7 @@ static JSValue _util_defaultGlobalSettings(JSContext* context, JSValueConst this { .name = "room_name", .type = "string", .description = "Name of the room.", .default_value = JS_NewString(context, "tilde friends tunnel") }, { .name = "seeds_host", .type = "string", .description = "Hostname for seed connections.", .default_value = JS_NewString(context, "seeds.tildefriends.net") }, { .name = "account_registration", .type = "boolean", .description = "Allow registration of new accounts.", .default_value = JS_TRUE }, + { .name = "replication_hops", .type = "integer", .description = "Number of hops to replicate (1 = direct follows, 2 = follows of follows, etc.).", .default_value = JS_NewInt32(context, 2) }, }; JSValue settings = JS_NewObject(context); diff --git a/tools/autotest.py b/tools/autotest.py index c77b4597..5eb37f4d 100755 --- a/tools/autotest.py +++ b/tools/autotest.py @@ -77,16 +77,9 @@ try: break except: pass - tf_tab_news = wait.until(exists_in_shadow_root(tf_app, By.ID, 'tf-tab-news')).shadow_root - while True: - try: - tf_profile = wait.until(exists_in_shadow_root(tf_tab_news, By.CLASS_NAME, 'tf-profile')).shadow_root - tf_profile.find_element(By.ID, 'edit_profile').click() - break - except: - pass - tf_profile.find_element(By.ID, 'name').send_keys('user') - tf_profile.find_element(By.ID, 'save_profile').click() + wait.until(exists_in_shadow_root(wait.until(exists_in_shadow_root(tf_app, By.ID, 'tf-tab-news')).shadow_root, By.CLASS_NAME, 'tf-profile')).shadow_root.find_element(By.ID, 'edit_profile').click() + wait.until(exists_in_shadow_root(wait.until(exists_in_shadow_root(tf_app, By.ID, 'tf-tab-news')).shadow_root, By.CLASS_NAME, 'tf-profile')).shadow_root.find_element(By.ID, 'name').send_keys('user') + wait.until(exists_in_shadow_root(wait.until(exists_in_shadow_root(tf_app, By.ID, 'tf-tab-news')).shadow_root, By.CLASS_NAME, 'tf-profile')).shadow_root.find_element(By.ID, 'save_profile').click() driver.switch_to.default_content() wait.until(expected_conditions.presence_of_element_located((By.XPATH, '//button[text()="✅ Allow"]'))).click()