Add surah/random

This commit is contained in:
0x1eef 2023-03-10 07:39:03 -03:00
parent 20b7420ac9
commit 2dfadcb937
5 changed files with 20 additions and 27 deletions

2
Rules
View file

@ -30,7 +30,7 @@ end
##
# Require rules
require_rules "rules/assets"
require_rules "rules/pages/RandomRedirect", {locales:, surah_id_to_name:}
require_rules "rules/pages/surah/random", {locales:, surah_id_to_name:}
require_rules "rules/pages/surah/stream", {locales:, surah_id_to_name:}
require_rules "rules/pages/surah/index", {locales:}
require_rules "rules/pages/surah/redirect"

View file

@ -1,22 +0,0 @@
#!/usr/bin/env ruby
##
# Contains rules that are related to RandomRedirect.html.erb
# in one way or another
compile "/html/redirect-to-surah-slug.html.erb" do
filter(:erb)
1.upto(114) do |surahno|
locales.each { write(File.join("/", _1, surahno.to_s, "index.html")) }
end
end
compile "/js/pages/RandomRedirect.ts" do
filter :webpack
write "/js/pages/RandomRedirect.js"
end
compile "/js/pages/redirect-to-surah-slug.ts" do
filter :webpack
write "/js/pages/redirect-to-surah-slug.js"
end

View file

@ -0,0 +1,16 @@
#!/usr/bin/env ruby
##
# Redirects to a random surah
locales.each do |locale|
compile "/html/pages/surah/random.html.erb", rep: "random/#{locale}" do
filter(:erb)
write("/#{locale}/random/index.html")
end
end
compile "/js/pages/surah/random.ts" do
filter :webpack
write "/js/pages/surah/random.js"
end

View file

@ -7,6 +7,6 @@
<script class="surah-id-to-slug" type="application/json">
<%= File.read(File.join(Dir.getwd, "src", "slugs.json")) %>
</script>
<script src="/js/pages/RandomRedirect.js"></script>
<script src="/js/pages/surah/random.js"></script>
</body>
</html>

View file

@ -1,10 +1,9 @@
import { Locale } from 'lib/Locale';
(function () {
const day = new Date().getDay();
const surahId: number = day === 5 ? 18 : Math.ceil(Math.random() * 114);
const surahId: number = Math.ceil(Math.random() * 114);
const locale = Locale(window);
const el: HTMLElement = document.querySelector('.surah-id-to-slug');
const slugs = JSON.parse(el.innerText);
location.replace(`/${locale.fromPath() || locale.fromBrowser()}/${slugs[surahId]}`);
location.replace(`/${locale.fromPath()}/${slugs[surahId]}`);
})();