show user's top known instances on the login page

This commit is contained in:
codl 2018-05-08 00:06:36 +02:00
parent 447923b1f1
commit 4c7a919079
No known key found for this signature in database
GPG Key ID: 6CD7C8891ED1233A
4 changed files with 14 additions and 7 deletions

View File

@ -211,10 +211,10 @@ def delete(post):
def suggested_instances(limit=5, min_popularity=5, blacklist=tuple()): def suggested_instances(limit=5, min_popularity=5, blacklist=tuple()):
return ( return tuple((ins.instance for ins in (
MastodonInstance.query MastodonInstance.query
.filter(MastodonInstance.popularity > min_popularity) .filter(MastodonInstance.popularity > min_popularity)
.filter(~MastodonInstance.instance.in_(blacklist)) .filter(~MastodonInstance.instance.in_(blacklist))
.order_by(db.desc(MastodonInstance.popularity), .order_by(db.desc(MastodonInstance.popularity),
MastodonInstance.instance) MastodonInstance.instance)
.limit(limit).all()) .limit(limit).all())))

View File

@ -35,7 +35,10 @@ def index():
@app.route('/about/') @app.route('/about/')
def 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( return render_template(
'about.html', 'about.html',
mastodon_instances=instances, mastodon_instances=instances,
@ -270,7 +273,11 @@ def mastodon_login_step2(instance_url):
ki.bump(instance_url) ki.bump(instance_url)
resp = redirect(url_for('index')) 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 return resp

View File

@ -37,12 +37,12 @@
<p> <p>
{% for instance in mastodon_instances %} {% for instance in mastodon_instances %}
<a style='background-color:#282c37' class='btn primary' href="{{ url_for('mastodon_login_step1', instance_url=instance.instance) }}"> <a style='background-color:#282c37' class='btn primary' href="{{ url_for('mastodon_login_step1', instance_url=instance) }}">
{% if loop.first %} {% if loop.first %}
{{picture(st, 'mastodon', (20,40,80), ('webp', 'png'))}} {{picture(st, 'mastodon', (20,40,80), ('webp', 'png'))}}
Log in with Log in with
{% endif %} {% endif %}
{{instance.instance}} {{instance}}
</a> </a>
{% else %} {% else %}
<a style='background-color:#282c37' class='btn primary' href="{{ url_for('mastodon_login_step1') }}"> <a style='background-color:#282c37' class='btn primary' href="{{ url_for('mastodon_login_step1') }}">

View File

@ -18,7 +18,7 @@
<datalist id='instances'> <datalist id='instances'>
<option value=''> <option value=''>
{% for instance in instances %} {% for instance in instances %}
<option value='{{instance.instance}}'> <option value='{{instance}}'>
{% endfor %} {% endfor %}
</datalist> </datalist>
<input name='confirm' value='Log in' type='submit'/> <input name='confirm' value='Log in' type='submit'/>