tangled
alpha
login
or
join now
mackuba.eu
/
lycan
35
fork
atom
Don't forget to lycansubscribe
35
fork
atom
overview
issues
1
pulls
pipelines
added endpoint to check import status
mackuba.eu
5 months ago
8ca0089a
94c1746c
+43
-1
2 changed files
expand all
collapse all
unified
split
app
models
user.rb
server.rb
+23
app/models/user.rb
···
78
78
[:likes, :reposts, :quotes, :pins].map { |x| self.send(x).in_queue(queue).to_a }.reduce(&:+)
79
79
end
80
80
81
81
+
def imported_until
82
82
+
return nil unless self.imports.exists?
83
83
+
84
84
+
oldest_imported_items = []
85
85
+
started = false
86
86
+
87
87
+
[:likes, :reposts, :pins, :quotes].each do |group|
88
88
+
if self.send(group).where(queue: :import).exists?
89
89
+
oldest_imported_items << self.send(group).where(queue: nil).order(:time).first
90
90
+
end
91
91
+
end
92
92
+
93
93
+
earliest_oldest = oldest_imported_items.compact.sort_by(&:time).last
94
94
+
95
95
+
if earliest_oldest
96
96
+
earliest_oldest.time
97
97
+
elsif self.imports.merge(Import.unfinished).exists?
98
98
+
nil
99
99
+
else
100
100
+
:end
101
101
+
end
102
102
+
end
103
103
+
81
104
def delete_posts_cascading
82
105
posts_subquery = self.posts.select(:id)
83
106
+20
-1
app/server.rb
···
38
38
end
39
39
40
40
begin
41
41
-
did = @authenticator.decode_user_from_jwt(auth_header, 'blue.feeds.lycan.searchPosts')
41
41
+
method = request.path.split('/')[2]
42
42
+
did = @authenticator.decode_user_from_jwt(auth_header, method)
42
43
rescue StandardError => e
43
44
halt json_error('InvalidToken', e.message, status: 401)
44
45
end
···
110
111
end
111
112
112
113
json_response(terms: query.terms, posts: post_uris, cursor: items.last&.cursor)
114
114
+
end
115
115
+
116
116
+
get '/xrpc/blue.feeds.lycan.getImportStatus' do
117
117
+
headers['access-control-allow-origin'] = '*'
118
118
+
119
119
+
did = get_user_did
120
120
+
user = User.find_by(did: did)
121
121
+
until_date = user&.imported_until
122
122
+
123
123
+
case until_date
124
124
+
when nil
125
125
+
json_response(status: 'not_started')
126
126
+
when :end
127
127
+
json_response(status: 'finished')
128
128
+
else
129
129
+
progress = 1 - (until_date - user.registered_at) / (Time.now - user.registered_at)
130
130
+
json_response(status: 'in_progress', position: until_date.iso8601, progress: progress)
131
131
+
end
113
132
end
114
133
115
134
get '/.well-known/did.json' do