Commit Graph

168 Commits

Author SHA1 Message Date
Hamid Reza Mohammadi
cee01357fc people tags #387 2026-10-01 08:01:18 +03:30
Hamid Reza Mohammadi
eb88056d0b people tags #387 2026-09-30 18:31:59 +03:30
Hamid Reza Mohammadi
f305394ad7 people tags #387 2026-09-30 18:17:44 +03:30
Hamid Reza Mohammadi
0cb288228d people tags #387 2026-09-29 21:10:46 +03:30
Hamid Reza Mohammadi
e0ab9915b6 people tags #387 2026-09-29 19:53:09 +03:30
Hamid Reza Mohammadi
bb68c074b0 people tags #387 2026-09-29 19:32:57 +03:30
Hamid Reza Mohammadi
9d12c23400 people tags #387 2026-09-29 17:13:02 +03:30
Hamid Reza Mohammadi
1c65da5ade people tags #387 2026-09-29 12:35:40 +03:30
Hamid Reza Mohammadi
07cb45f58c people tags #387 2026-09-28 20:10:20 +03:30
Hamid Reza Mohammadi
8110e09a07 people tags #387 2026-09-28 14:41:47 +03:30
Hamid Reza Mohammadi
5003f92f00 people tags #387 2026-09-28 08:54:42 +03:30
Hamid Reza Mohammadi
f6bd5a756c enable users to suggest geo location tags #421 2026-09-18 17:34:30 +03:30
Ehsan Mohandesi
cb7b1b03a3 Replace Spotify search with a validated music link box
The Spotify Web API integration stopped working, leaving /spotify unable to
suggest songs at all. Replace the artist/album/track search flow with a single
box where the user pastes a link to the track on a music service.

Links are checked against a hardcoded allow-list of legal streaming and store
domains so links to ripped audio cannot be submitted. The check lives in the
service layer, not just the page: any authenticated user can POST to
/api/ganjoor/song directly and bypass the UI. Hosts are matched against the
full host or a dot-prefixed suffix, so look-alikes such as
open.spotify.com.evil.com are rejected; https is required, and userinfo and
non-default ports are refused. Accepted URLs are canonicalised - https,
lowercased host, tracking parameters stripped - so the same track always yields
the same stored URL and duplicate detection actually works.

Links are stored under one new type, PoemMusicTrackType.MusicUrl, with the
platform derived from the host at render time. That needs no migration or
backfill, and supporting another service later needs no new enum value. The
duplicate check no longer keys on TrackType, which closes a gap where the same
URL could be resubmitted as a different type. Several links per poem remain
allowed; only an identical URL for the same poem is refused.

The Spotify search page and its OAuth plumbing are kept and simply redirect to
/musiclink while the existing SpotifyWorking flag is false, so the old flow can
be restored if that API ever works again.

Track URLs are no longer written through Html.Raw into href attributes. They
previously came from the Spotify API; now that they are user supplied, encoding
them prevents stored XSS.

Also fixes two latent bugs in SuggestSong that this flow would have hit: a null
dereference when TrackUrl is empty, and a singer lookup that matched any singer
with an empty Url.
2026-09-13 22:16:18 -05:00
Hamid Reza Mohammadi
978c6f6e0e tajik + persian text backend 2026-08-16 16:53:49 +03:30
Hamid Reza Mohammadi
ca2f708add #495 rating comments 2026-08-04 15:47:05 +03:30
Hamid Reza Mohammadi
64ca7ddaa4 #495 GanjoorCommentReactions 2026-07-22 18:42:56 +03:30
Hamid Reza Mohammadi
2ba0056b44 #493 GanjoorUserPrePoemVisitViewModel 2026-06-27 15:02:10 +03:30
Hamid Reza Mohammadi
349d9ec9e9 #493 GanjoorUserPrePoemVisitViewModel 2026-06-26 19:09:49 +03:30
Hamid Reza Mohammadi
506de8eeac #478 user create date 2025-03-29 18:23:13 +03:30
Hamid Reza Mohammadi
881ddd7c45 #478 user contributions + PublicUserNotes 2025-03-29 11:31:08 +03:30
Hamid Reza Mohammadi
e5bf27f60a #478 UserContributionsViewModel 2025-03-28 13:20:25 +03:30
Hamid Reza Mohammadi
e2c396ff3a #467 adding page id 2025-03-26 14:28:57 +03:30
Hamid Reza Mohammadi
650b12eb54 comparison of usage stats of a selected word among all poets #471 2025-03-07 21:08:55 +03:30
Hamid Reza Mohammadi
988e92393c comparison of usage stats of a selected word among all poets
#471
2025-03-04 17:33:19 +03:30
Hamid Reza Mohammadi
4fe58c5822 #467 GetLastUnreviewedUserCorrectionForCatAsync 2025-02-14 16:44:17 +03:30
Hamid Reza Mohammadi
3528b62667 #467 GanjoorCatCorrectionViewModel 2025-02-14 16:32:27 +03:30
Hamid Reza Mohammadi
277744c35f #467 GanjoorCatCorrection model 2025-02-14 11:19:05 +03:30
Hamid Reza Mohammadi
9458263f66 display poem.CoupletsCount in similars page 2025-01-30 11:41:21 +03:30
Hamid Reza Mohammadi
d831843279 #458 unlink links 2025-01-16 16:54:58 +03:30
Hamid Reza Mohammadi
d4c572c4f4 #445 trying to fix performance problems
Related Work Items: #4
2024-07-21 09:26:07 +03:30
Hamid Reza Mohammadi
298db445ba GanjoorVerseViewModel + Tajik 2024-07-20 17:19:47 +03:30
Hamid Reza Mohammadi
9e8b4d4300 GanjoorPoemSummaryViewModel + TajikTitle 2024-07-20 17:17:34 +03:30
Hamid Reza Mohammadi
654346e8ba GanjoorPoemCompleteViewModel + TajikTitle 2024-07-20 17:14:52 +03:30
Hamid Reza Mohammadi
403fd8a4f3 #445 GanjoorCatViewModel + tajik fields 2024-07-20 16:47:19 +03:30
Hamid Reza Mohammadi
8fd1be44c2 #445 GanjoorPoetViewModel + Tajik fields 2024-07-20 16:42:05 +03:30
Hamid Reza Mohammadi
35aa79520c adding external suggested photos url 2024-05-04 16:43:42 +03:30
Hamid Reza Mohammadi
38d6e40fec #438 GanjoorCatViewModel + PaperSources 2024-05-04 08:46:39 +03:30
Hamid Reza Mohammadi
a0b791649b #430 display poem naskban images for a category 2024-04-04 14:27:53 +03:30
Hamid Reza Mohammadi
519a56f6ce #420 GanjoorQuotedPoemViewModel + SuggestedById 2024-01-28 21:18:41 +03:30
Hamid Reza Mohammadi
8f05c18126 #420 MySuggestedQuotes 2024-01-25 10:59:05 +03:30
Hamid Reza Mohammadi
e2fe50b3ab #420 ModerateGanjoorQuotedPoemAsync 2024-01-13 15:39:23 +03:30
Hamid Reza Mohammadi
4635834362 #420 GanjoorQuotedPoemViewModel 2024-01-05 09:00:08 +03:30
Hamid Reza Mohammadi
87b943587c #420 GanjoorQuotedPoemViewModel 2024-01-05 08:56:11 +03:30
Hamid Reza Mohammadi
5b435fa7f4 #418 GanjoorPoem + ClaimedByMultiplePoets 2023-12-15 16:22:50 +03:30
Hamid Reza Mohammadi
d665fe1eb4 #418 GetGanjoorQuotedPoemsForRelatedAsync 2023-12-15 15:32:54 +03:30
Hamid Reza Mohammadi
2717c801d5 docs: #379 api for retrieving list of books 2023-04-23 18:28:19 +03:30
Hamid Reza Mohammadi
ed28c4d804 docs: #379 #380 UI for calling PUT API (cat meta) 2023-04-13 17:40:37 +03:30
Hamid Reza Mohammadi
fd3aacf010 docs: #379 #380 filling new fields GanjoorCatViewModel 2023-04-11 14:35:48 +03:30
Hamid Reza Mohammadi
cc5dee7429 docs: #379 #389 new fields for GanjoorCatViewModel 2023-04-10 13:07:21 +03:30
Hamid Reza Mohammadi
f0b32437f2 docs: #373 updating some view models 2023-03-30 17:46:13 +03:30