From 3fc9f86646824d742d6ea5ed612951e899d8ad0d Mon Sep 17 00:00:00 2001 From: SondreB Date: Sun, 19 Feb 2023 12:10:20 +0100 Subject: [PATCH] Fix a bug with Spotify embedded - Final cleanup of the old content code --- src/app/shared/content/content.html | 2 +- src/app/shared/content/content.ts | 115 ++-------------------------- 2 files changed, 9 insertions(+), 108 deletions(-) diff --git a/src/app/shared/content/content.html b/src/app/shared/content/content.html index 01dcf91..6658e34 100644 --- a/src/app/shared/content/content.html +++ b/src/app/shared/content/content.html @@ -11,7 +11,7 @@ - + {{ token }} diff --git a/src/app/shared/content/content.ts b/src/app/shared/content/content.ts index 0844f6b..967b89f 100644 --- a/src/app/shared/content/content.ts +++ b/src/app/shared/content/content.ts @@ -28,15 +28,7 @@ export class ContentComponent { tooltip = ''; profiles: NostrProfileDocument[] = []; - content?: string; - - images: SafeResourceUrl[] = []; - videos: MediaItem[] = []; - youtube: MediaItem[] = []; - spotify: SafeResourceUrl[] = []; - tidal: SafeResourceUrl[] = []; - - // static regexpVideo = /^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?$/g; + // content?: string; constructor( private eventService: EventService, @@ -77,100 +69,12 @@ export class ContentComponent { } async ngOnInit() { - this.images = []; - if (!this.event) { return; } - let content = this.event.content; - this.content = content; - this.dynamicText = this.toDynamicText(this.event); - - // TODO: This is a very hacky way of doing this, it's just a quick prototype to demonstrate. - // TODO: Replace using regular expressions. - // if (content.indexOf('#[') > -1) { - // let startIndex = content.indexOf('#['); - // let endIndex = content.indexOf(']', startIndex); - - // const profileIndex = content.substring(startIndex + 2, endIndex); - // const profileIndexNumber = parseInt(profileIndex); - - // let publicKey = this.replyTo(this.event, profileIndexNumber); - - // if (!publicKey) { - // return; - // } - - // const profile = this.profileService.getCachedProfile(publicKey); - - // if (!profile) { - // return; - // } - - // content = content.substring(0, content.indexOf('#[')) + '@' + profile?.name + content.substring(endIndex + 1); - // } - this.isFollowing = this.profileService.isFollowing(this.event.pubkey); - - if (this.isFollowing) { - const images = [...content.matchAll(this.contentService.regexpImage)]; - this.images = images.map((i) => this.utilities.sanitizeUrlAndBypass(i[0])); - - const videos = [...content.matchAll(this.contentService.regexpVideo)]; - this.videos = videos.map((i) => { - return { url: this.utilities.sanitizeUrlAndBypass(i[0]), originalUrl: i[0] }; - }); - - const thisisthewayMatch = [...content.matchAll(this.contentService.regexpThisIsTheWay)]; - const thisistheway = thisisthewayMatch.map((i) => this.utilities.bypassUrl(`https://i.ytimg.com/vi/LaiN63o_BxA/maxresdefault.jpg`)); - this.images.push(...thisistheway); - - const alwaysHasBeenMatch = [...content.matchAll(this.contentService.regexpAlwaysHasBeen)]; - const alwayshasbeen = alwaysHasBeenMatch.map((i) => this.utilities.bypassUrl(`https://imgflip.com/s/meme/Always-Has-Been.png`)); - this.images.push(...alwayshasbeen); - - // const youtubes = [...content.matchAll(this.contentService.regexpYouTube)]; - // this.youtube = youtubes.map((i) => { - // return { url: this.utilities.bypassFrameUrl(`https://www.youtube.com/embed/${i[1]}`), originalUrl: `https://www.youtube.com/embed/${i[1]}` }; - // }); - - // const spotify = [...content.matchAll(ContentComponent.regexpSpotify)]; - // this.spotify = spotify.map((i) => this.utilities.sanitizeUrlAndBypassFrame(i[0].replace('open.spotify.com/', 'open.spotify.com/embed/'))); - - // Remove the image links from the text. - content = content.replaceAll(this.contentService.regexpImage, ''); - content = content.replaceAll(this.contentService.regexpYouTube, ''); - content = content.replaceAll(this.contentService.regexpVideo, ''); - // content = content.replaceAll(ContentComponent.regexpThisIsTheWay, ''); - - if (this.optionsService.values.enableTidal) { - // After doing image, video and known memes, get all URLs and handle Tidal. - const urls = [...content.matchAll(this.contentService.regexpUrl)]; - const tidalUrl = urls.filter((url) => url[0].indexOf('tidal.com') > -1); - this.tidal = tidalUrl.map((i) => this.utilities.sanitizeUrlAndBypassFrame(i[0].replace('tidal.com/track', 'embed.tidal.com/tracks'))); - - for (let index = 0; index < tidalUrl.length; index++) { - content = content.replace(tidalUrl[index][0], ''); - } - } - - if (this.optionsService.values.enableSpotify) { - // After doing image, video and known memes, get all URLs and handle Spotify. - const urls = [...content.matchAll(this.contentService.regexpUrl)]; - const spotifyUrl = urls.filter((url) => url[0].indexOf('open.spotify.com') > -1); - this.spotify = spotifyUrl.map((i) => this.utilities.sanitizeUrlAndBypassFrame(i[0].replace('open.spotify.com/', 'open.spotify.com/embed/'))); - - for (let index = 0; index < spotifyUrl.length; index++) { - content = content.replace(spotifyUrl[index][0], ''); - } - } - - //content = content.replaceAll(ContentComponent.regexpUrl, ''); - } - - this.content = content; } expandImage(imagePath: SafeResourceUrl) { @@ -185,7 +89,6 @@ export class ContentComponent { }); } - // TODO: FIX THIS IMMEDIATELY FOR PERFORMANCE! hashtags(tags: any[]) { const hashtags = tags.filter((row) => row[0] === 't').map((t) => t[1]); @@ -193,8 +96,6 @@ export class ContentComponent { return null; } - // console.log(hashtags.toString()); - return hashtags; } @@ -304,10 +205,16 @@ export class ContentComponent { return false; } + bigSize = false; + //Replace keywords with keyword objects toDynamicText(event: NostrEventDocument): (string | TokenKeyword)[] { let text = event.content; + if (text.length < 9) { + this.bigSize = true; + } + const res: (string | TokenKeyword)[] = []; const lines = text.split(/\r?\n/); const tokens = []; @@ -355,13 +262,7 @@ export class ContentComponent { i = res.push({ word: token, token: 'link' }); } } else if (this.isSpotify(token)) { - const links = [...token.matchAll(this.contentService.regexpSpotify)]; - if (links.length > 0) { - // this.spotify = spotifyUrl.map((i) => this.utilities.sanitizeUrlAndBypassFrame(i[0].replace('open.spotify.com/', 'open.spotify.com/embed/'))); - i = res.push({ safeWord: this.utilities.sanitizeUrlAndBypassFrame(links[0][0].replace('open.spotify.com/', 'open.spotify.com/embed/')), word: token, token: 'spotify' }); - } else { - i = res.push({ word: token, token: 'link' }); - } + i = res.push({ safeWord: this.utilities.sanitizeUrlAndBypassFrame(token.replace('open.spotify.com/', 'open.spotify.com/embed/')), word: token, token: 'spotify' }); } else if (this.isTidal(token)) { // TODO: Need to improve this, but for now we do a very basic replacement for single tracks only. if (token.startsWith('https://tidal.com/browse/track/')) {