diff --git a/libforget/mastodon.py b/libforget/mastodon.py index 68a2a1a..5de06fe 100644 --- a/libforget/mastodon.py +++ b/libforget/mastodon.py @@ -211,10 +211,10 @@ def delete(post): def suggested_instances(limit=5, min_popularity=5, blacklist=tuple()): - return ( + return tuple((ins.instance for ins in ( MastodonInstance.query .filter(MastodonInstance.popularity > min_popularity) .filter(~MastodonInstance.instance.in_(blacklist)) .order_by(db.desc(MastodonInstance.popularity), MastodonInstance.instance) - .limit(limit).all()) + .limit(limit).all()))) diff --git a/routes/__init__.py b/routes/__init__.py index 83c79d4..45cb24c 100644 --- a/routes/__init__.py +++ b/routes/__init__.py @@ -35,7 +35,10 @@ def index(): @app.route('/about/') def about(): - instances = libforget.mastodon.suggested_instances() + ki = KnownInstances(request.cookies.get('forget_known_instances', '')) + ki.normalize() + instances = ki.top() + instances += libforget.mastodon.suggested_instances(blacklist=instances) return render_template( 'about.html', mastodon_instances=instances, @@ -270,7 +273,11 @@ def mastodon_login_step2(instance_url): ki.bump(instance_url) resp = redirect(url_for('index')) - resp.set_cookie('forget_known_instances', ki.serialize()) + resp.set_cookie( + 'forget_known_instances', ki.serialize(), + max_age=60*60*24*365, + httponly=True + ) return resp diff --git a/templates/about.html b/templates/about.html index e0604e5..844ac33 100644 --- a/templates/about.html +++ b/templates/about.html @@ -37,12 +37,12 @@

{% for instance in mastodon_instances %} - + {% if loop.first %} {{picture(st, 'mastodon', (20,40,80), ('webp', 'png'))}} Log in with {% endif %} - {{instance.instance}} + {{instance}} {% else %} diff --git a/templates/mastodon_login.html b/templates/mastodon_login.html index 05bc3ef..64bea3f 100644 --- a/templates/mastodon_login.html +++ b/templates/mastodon_login.html @@ -18,7 +18,7 @@