From 3c38f81b8a145778d4329c6be4c91baa00ca0d48 Mon Sep 17 00:00:00 2001 From: pdp8 Date: Fri, 21 Jul 2023 16:28:24 +0200 Subject: thread rendering --- client.rb | 34 +++++++--------------------------- views/collection.erb | 12 ++++++------ views/object.erb | 49 ++++++++++++++++++++++++++++--------------------- 3 files changed, 41 insertions(+), 54 deletions(-) diff --git a/client.rb b/client.rb index 75464c1..f90ca5f 100644 --- a/client.rb +++ b/client.rb @@ -135,32 +135,22 @@ get '/' do redirect '/inbox' end -# ['/inbox', '/shared', '/outbox'].each do |path| ['/inbox', '/outbox'].each do |path| get path, provides: 'html' do protected! - @dir = path.sub('/', '') - # collection = DirI# - # collection = Dir[File.join(@dir, 'object','*', '*.json')].collect { |f| JSON.parse(File.read(f)) } - - @collection = Dir[File.join(@dir, 'create', '*.json')].collect { |f| JSON.parse(File.read(f))['object'] } - @collection += Dir[File.join(@dir, 'announce', '*.json')].collect { |f| JSON.parse(File.read(f))['object'] } + @box = path.sub('/', '') + collection = Dir[File.join(@box, 'object', '*', '*.json')].collect { |f| JSON.parse(File.read(f)) } @threads = [] - @collection.collect! do |object| + collection.collect! do |object| object = fetch(object) if object.is_a?(String) && object.match(/^http/) object end - @collection.each do |object| - add_parents object - end - @collection.each do |object| - object['indent'] = 0 + collection.each do |object| object['replies'] = [] - @threads << object if object['inReplyTo'].nil? || @collection.select { |o| o['id'] == object['inReplyTo'] }.empty? + @threads << object if object['inReplyTo'].nil? || collection.select { |o| o['id'] == object['inReplyTo'] }.empty? end - @collection.each do |object| - @collection.select { |o| o['id'] == object['inReplyTo'] }.each do |o| - object['indent'] = o['indent'] + 2 + collection.each do |object| + collection.select { |o| o['id'] == object['inReplyTo'] }.each do |o| o['replies'] << object end end @@ -170,16 +160,6 @@ end end helpers do - def add_parents(object) - return unless object['inReplyTo'] - - object = fetch object['inReplyTo'] - return unless object - - @collection << object unless @collection.collect { |o| o['id'] }.include? object['id'] - add_parents object - end - def protected! halt 403 unless session['client'] end diff --git a/views/collection.erb b/views/collection.erb index 9640b7c..c169e0b 100644 --- a/views/collection.erb +++ b/views/collection.erb @@ -4,9 +4,9 @@ -

<%= @dir %> - <% dirs = ['inbox','outbox','shared'] - dirs.delete(@dir) +

<%= @box %> + <% dirs = ['inbox','outbox'] + dirs.delete(@box) dirs.each do |d| %>
@@ -18,10 +18,10 @@ @object = object %> <%= erb :object %> <% end %> - <% unless @dir == 'shared' %> + <% unless @box == 'shared' %> - - + +
<% end %> diff --git a/views/object.erb b/views/object.erb index 6ac9f43..b4b7d89 100644 --- a/views/object.erb +++ b/views/object.erb @@ -1,32 +1,38 @@ <% @idx +=1 mention = mention @object['attributedTo'] JSON.parse(File.read(FOLLOWING))['orderedItems'].include?(@object['attributedTo']) ? follow='unfollow' : follow='follow' + @indent = 0 unless @object['inReplyTo'] %> -
em' id='<%= @idx %>'> +
', target='_blank'><%= mention %> 
' /> - +
-   - <%= @object['published'] %> -   -
- ' /> - - - -
-   - <% unless @dir == 'shared' %> -
- ' /> - - - + <% unless @object['inReplyTo'] %> +   + <%= @object['published'] %> +   + + ' /> + + + +
+ <% end %> + <% unless @box == 'shared' %> +   +
+ ' /> + + + +
+ <% end %> + <% unless @object['content'].match(/^

/) %> +

<% end %> - <%= @object['content'] %> <% if @object['attachment'] @object['attachment'].each do |att| @@ -44,12 +50,12 @@ <% end %> <% end %>

- <% unless @dir == 'shared' %> + <% unless @box == 'shared' %>

<% @object['replies'].each do |reply| + @indent += 2 @object = reply %> <%= erb :object %> <% end %> -- cgit v1.2.3