summaryrefslogtreecommitdiffstats
path: root/src/invidious.cr
diff options
context:
space:
mode:
Diffstat (limited to 'src/invidious.cr')
-rw-r--r--src/invidious.cr102
1 files changed, 80 insertions, 22 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index 0d84081f..e7f28927 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -246,12 +246,10 @@ get "/watch" do |env|
user = env.get? "user"
if user
user = user.as(User)
- if !user.watched.includes? id
- PG_DB.exec("UPDATE users SET watched = watched || $1 WHERE id = $2", [id], user.id)
- end
preferences = user.preferences
subscriptions = user.subscriptions
+ watched = user.watched
end
subscriptions ||= [] of String
@@ -268,6 +266,10 @@ get "/watch" do |env|
next templated "error"
end
+ if watched && !watched.includes? id
+ PG_DB.exec("UPDATE users SET watched = watched || $1 WHERE $2 = id", [id], user.as(User).id)
+ end
+
if nojs
if preferences
source = preferences.comments[0]
@@ -963,7 +965,6 @@ end
get "/preferences" do |env|
user = env.get? "user"
-
referer = get_referer(env)
if user
@@ -976,7 +977,6 @@ end
post "/preferences" do |env|
user = env.get? "user"
-
referer = get_referer(env)
if user
@@ -1079,7 +1079,6 @@ end
get "/toggle_theme" do |env|
user = env.get? "user"
-
referer = get_referer(env)
if user
@@ -1098,13 +1097,66 @@ get "/toggle_theme" do |env|
env.redirect referer
end
+get "/mark_watched" do |env|
+ user = env.get? "user"
+ referer = get_referer(env, "/feed/subscriptions")
+
+ id = env.params.query["id"]?
+ if !id
+ halt env, status_code: 400
+ end
+
+ redirect = env.params.query["redirect"]?
+ redirect ||= "false"
+ redirect = redirect == "true"
+
+ if user
+ user = user.as(User)
+ if !user.watched.includes? id
+ PG_DB.exec("UPDATE users SET watched = watched || $1 WHERE $2 = id", [id], user.id)
+ end
+ end
+
+ if redirect
+ env.redirect referer
+ else
+ env.response.content_type = "application/json"
+ "{}"
+ end
+end
+
+get "/mark_unwatched" do |env|
+ user = env.get? "user"
+ referer = get_referer(env, "/feed/history")
+
+ id = env.params.query["id"]?
+ if !id
+ halt env, status_code: 400
+ end
+
+ redirect = env.params.query["redirect"]?
+ redirect ||= "false"
+ redirect = redirect == "true"
+
+ if user
+ user = user.as(User)
+ PG_DB.exec("UPDATE users SET watched = array_remove(watched, $1) WHERE id = $2", id, user.id)
+ end
+
+ if redirect
+ env.redirect referer
+ else
+ env.response.content_type = "application/json"
+ "{}"
+ end
+end
+
# /modify_notifications
# will "ding" all subscriptions.
# /modify_notifications?receive_all_updates=false&receive_no_updates=false
# will "unding" all subscriptions.
get "/modify_notifications" do |env|
user = env.get? "user"
-
referer = get_referer(env)
if user
@@ -1150,7 +1202,6 @@ end
get "/subscription_manager" do |env|
user = env.get? "user"
-
referer = get_referer(env, "/")
if !user
@@ -1235,7 +1286,6 @@ end
get "/data_control" do |env|
user = env.get? "user"
-
referer = get_referer(env)
if user
@@ -1249,7 +1299,6 @@ end
post "/data_control" do |env|
user = env.get? "user"
-
referer = get_referer(env)
if user
@@ -1385,7 +1434,6 @@ end
get "/subscription_ajax" do |env|
user = env.get? "user"
-
referer = get_referer(env)
if user
@@ -1547,6 +1595,7 @@ get "/feed/subscriptions" do |env|
if user
user = user.as(User)
preferences = user.preferences
+ env.set "show_watched", true
# Refresh account
headers = HTTP::Headers.new
@@ -1670,19 +1719,28 @@ get "/feed/subscriptions" do |env|
end
end
-# get "/feed/history" do |env|
-# user = env.get? "user"
-# referer = get_referer(env)
+get "/feed/history" do |env|
+ user = env.get? "user"
+ referer = get_referer(env)
+
+ page = env.params.query["page"]?.try &.to_i?
+ page ||= 1
+
+ if user
+ user = user.as(User)
-# if user
-# user = user.as(User)
-# watched = user.watched.reverse
+ limit = user.preferences.max_results
+ if user.watched[(page - 1)*limit]?
+ watched = user.watched.reverse[(page - 1)*limit, limit]
+ else
+ watched = [] of String
+ end
-# templated "history"
-# else
-# env.redirect referer
-# end
-# end
+ templated "history"
+ else
+ env.redirect referer
+ end
+end
get "/feed/channel/:ucid" do |env|
env.response.content_type = "text/xml"