{"version":3,"sources":["../node_modules/faker/locale sync /^/.*$","functionals/settings.js","SidebarOption.js","ViewSelector.js","functionals/utils.js","Sidebar.js","Post.js","Feed.js","NewsCard.js","Widgets.js","Article.js","App.js","functionals/serviceWorker.js","index.js","media/BarkerLogo.png","media/dog.mp3"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","API_URL","GET_WHOLE_TWEET_URL","GET_POST_FROM_ID","GET_VIEWERS_URL","GET_IDs_FROM_VIEWER_URL","GET_ARTICLE_FROM_ID_URL","SidebarOption","active","text","Icon","onClick","className","ViewSelector","prevProps","anchorEl","this","props","viewerObj","list","setNum","num","Menu","open","Boolean","disableEnforceFocus","onClose","setAnchorEl","viewer","index","MenuItem","key","class","style","padding","Avatar","src","String","Math","round","random","React","Component","scramble","word","letterArr","split","newArr","len","length","start","floor","push","splice","join","randomDate","fake_date","mocker","schema","date","faker","buildSync","console","log","randomUser","firstName","lastName","username","function","object","displayName","htmlTagger","regex","replacer","mode","arguments","new_text","replace","Sidebar","handleClick","event","preventDefault","setState","state","currentTarget","document","getElementsByClassName","play","PageIcon","cursor","window","alt","HomeIcon","SearchIcon","alert","PermIdentityIcon","switchClick","MoreHorizIcon","Button","variant","bark","dog","Post","isFlipped","isPaused","blurb","liked","bind","prevState","media","explanation","media_url","undefined","startsWith","news_url","location","origin","substring","href","target","rel","Card","paddingRight","CardMedia","image","img","slice","ReactPlayer","canPlay","onChange","visibilityChange","w","h","isVisible","innerWidth","height","width","url","loop","muted","playing","config","youtube","playerVars","controls","disablekb","modestbranding","color","img_url","flipper","flipDirection","dangerouslySetInnerHTML","__html","avatar","verified","fontSize","display","Feed","updateIdList","posts","loading","currentViewer","viewerURL","settings","axios","get","then","reponse","tweetIds","data","idList","addPost","catch","err","n","i","postURL","post","fake_user","media_response","concat","handleScroll","element","height_target","scrollHeight","scrollTop","ceil","clientHeight","queue","moreClick","profileClick","exploreClick","head","classname","onScroll","NewsCard","body","outline","border","borderTop","borderBottom","Widgets","newsTweetIds","max_length","needUpdate","paddingTop","Article","title","image_url","response","d","forEach","forceUpdate","getArticle","charset","name","content","type","toLocaleString","App","setViewer","viewerNum","scrollTo","switcherAnchor","viewersList","loaded","pathname","sort","widgets","viewersObj","val","substr","endsWith","lang","hostname","match","ReactDOM","render","StrictMode","getElementById","navigator","serviceWorker","ready","registration","unregister","error","message"],"mappings":"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","file":"static/js/main.b9aaf621.chunk.js","sourcesContent":["var map = {\n\t\"./ReadMe.md\": 1680,\n\t\"./af_ZA\": 126,\n\t\"./af_ZA.js\": 126,\n\t\"./ar\": 127,\n\t\"./ar.js\": 127,\n\t\"./az\": 128,\n\t\"./az.js\": 128,\n\t\"./cz\": 129,\n\t\"./cz.js\": 129,\n\t\"./de\": 130,\n\t\"./de.js\": 130,\n\t\"./de_AT\": 131,\n\t\"./de_AT.js\": 131,\n\t\"./de_CH\": 132,\n\t\"./de_CH.js\": 132,\n\t\"./el\": 133,\n\t\"./el.js\": 133,\n\t\"./en\": 134,\n\t\"./en.js\": 134,\n\t\"./en_AU\": 135,\n\t\"./en_AU.js\": 135,\n\t\"./en_AU_ocker\": 136,\n\t\"./en_AU_ocker.js\": 136,\n\t\"./en_BORK\": 137,\n\t\"./en_BORK.js\": 137,\n\t\"./en_CA\": 138,\n\t\"./en_CA.js\": 138,\n\t\"./en_GB\": 139,\n\t\"./en_GB.js\": 139,\n\t\"./en_GH\": 140,\n\t\"./en_GH.js\": 140,\n\t\"./en_IE\": 141,\n\t\"./en_IE.js\": 141,\n\t\"./en_IND\": 142,\n\t\"./en_IND.js\": 142,\n\t\"./en_NG\": 143,\n\t\"./en_NG.js\": 143,\n\t\"./en_US\": 144,\n\t\"./en_US.js\": 144,\n\t\"./en_ZA\": 145,\n\t\"./en_ZA.js\": 145,\n\t\"./es\": 146,\n\t\"./es.js\": 146,\n\t\"./es_MX\": 147,\n\t\"./es_MX.js\": 147,\n\t\"./fa\": 148,\n\t\"./fa.js\": 148,\n\t\"./fi\": 149,\n\t\"./fi.js\": 149,\n\t\"./fr\": 150,\n\t\"./fr.js\": 150,\n\t\"./fr_CA\": 151,\n\t\"./fr_CA.js\": 151,\n\t\"./fr_CH\": 152,\n\t\"./fr_CH.js\": 152,\n\t\"./ge\": 153,\n\t\"./ge.js\": 153,\n\t\"./hr\": 154,\n\t\"./hr.js\": 154,\n\t\"./hy\": 155,\n\t\"./hy.js\": 155,\n\t\"./id_ID\": 156,\n\t\"./id_ID.js\": 156,\n\t\"./it\": 157,\n\t\"./it.js\": 157,\n\t\"./ja\": 158,\n\t\"./ja.js\": 158,\n\t\"./ko\": 159,\n\t\"./ko.js\": 159,\n\t\"./nb_NO\": 160,\n\t\"./nb_NO.js\": 160,\n\t\"./ne\": 161,\n\t\"./ne.js\": 161,\n\t\"./nl\": 162,\n\t\"./nl.js\": 162,\n\t\"./nl_BE\": 163,\n\t\"./nl_BE.js\": 163,\n\t\"./pl\": 164,\n\t\"./pl.js\": 164,\n\t\"./pt_BR\": 165,\n\t\"./pt_BR.js\": 165,\n\t\"./pt_PT\": 166,\n\t\"./pt_PT.js\": 166,\n\t\"./ro\": 167,\n\t\"./ro.js\": 167,\n\t\"./ru\": 168,\n\t\"./ru.js\": 168,\n\t\"./sk\": 169,\n\t\"./sk.js\": 169,\n\t\"./sv\": 170,\n\t\"./sv.js\": 170,\n\t\"./tr\": 171,\n\t\"./tr.js\": 171,\n\t\"./uk\": 172,\n\t\"./uk.js\": 172,\n\t\"./vi\": 173,\n\t\"./vi.js\": 173,\n\t\"./zh_CN\": 174,\n\t\"./zh_CN.js\": 174,\n\t\"./zh_TW\": 175,\n\t\"./zh_TW.js\": 175,\n\t\"./zu_ZA\": 176,\n\t\"./zu_ZA.js\": 176\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1679;","export const API_URL = \"/api/\"\r\nexport const GET_WHOLE_TWEET_URL = API_URL + \"wholePost/\"\r\nexport const GET_POST_FROM_ID = API_URL + \"getPostFromID/\"\r\nexport const GET_VIEWERS_URL = API_URL + \"viewers/\"\r\nexport const GET_IDs_FROM_VIEWER_URL = API_URL + \"ViewerToId/\"\r\nexport const GET_ARTICLE_FROM_ID_URL = API_URL + \"article/\"\r\n\r\nexport default {\r\n API_URL, GET_WHOLE_TWEET_URL, GET_POST_FROM_ID, GET_VIEWERS_URL, GET_IDs_FROM_VIEWER_URL, GET_ARTICLE_FROM_ID_URL\r\n}","import React from \"react\";\r\nimport \"./SidebarOption.css\";\r\n\r\nfunction SidebarOption({ active, text, Icon, onClick }) {\r\n return (\r\n
\r\n \r\n

{text}

\r\n
\r\n );\r\n}\r\n\r\nexport default SidebarOption;\r\n","import React from \"react\";\r\nimport { Avatar, Button, Menu, MenuItem } from \"@material-ui/core\";\r\n\r\nexport default class ViewSelector extends React.Component{\r\n shouldComponentUpdate(prevProps){\r\n // console.log(this.props.anchorEl)\r\n if(prevProps.anchorEl !== this.props.anchorEl){\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n render(){\r\n const {list, num, setNum} = this.props.viewerObj\r\n return(\r\n this.props.setAnchorEl(false)}\r\n >{\r\n list.map((viewer, index) => (\r\n {setNum(index);this.props.setAnchorEl(false)}}\r\n >\r\n
\r\n \r\n
\r\n
{viewer}
\r\n
\r\n ))\r\n }\r\n )\r\n }\r\n}","import mocker from 'mocker-data-generator'\r\n\r\nexport function scramble(word){\r\n const letterArr = word.split(\"\");\r\n let newArr = [];\r\n\r\n const len = letterArr.length;\r\n for (let start = 0; start < len; start++) {\r\n // Get a random number between 0 and the highest array index and put it in the new array\r\n let num = Math.floor(Math.random() * letterArr.length)\r\n newArr.push(letterArr[num]);\r\n \r\n // Remove letter from original array\r\n letterArr.splice(num,1);\r\n }\r\n\r\n return(newArr.join(\"\"))\r\n}\r\n\r\nexport function randomDate(){\r\n const mocker_schema = {\r\n date: {faker: 'date.past'}\r\n }\r\n const fake_date = mocker().schema('item', mocker_schema, 1).buildSync()['item'][0]['date']\r\n console.log(\"Generated fake date: \" + String(fake_date))\r\n return fake_date\r\n}\r\n\r\n// Function for getting random user using mocker-data-generator\r\n// This is way too complicated\r\nexport function randomUser(){\r\n const mocker_schema = {\r\n firstName: {faker: 'name.firstName'},\r\n lastName: {faker: 'name.lastName'},\r\n username: {function: function() {\r\n return (this.object.firstName+this.object.lastName)\r\n }},\r\n displayName: {function: function() {\r\n return (this.object.firstName + \" \" + this.object.lastName)\r\n }}\r\n }\r\n\r\n const fake_user = mocker().schema('user', mocker_schema, 1).buildSync()['user'][0]\r\n //console.log(fake_user)\r\n\r\n return fake_user\r\n}\r\n\r\nexport function htmlTagger(text, mode='link'){\r\n let regex, replacer\r\n switch(mode){\r\n case 'link': // Tags for links\r\n regex=/((.*)<\\/a>)?/gi\r\n replacer = function(){return '' + (arguments[7] || arguments[2]) + ''}\r\n break\r\n case 'hashtag':\r\n regex=/(#\\S*)/gi\r\n replacer=function(){return ''+arguments[1]+''}\r\n break\r\n case 'atSymbol':\r\n regex=/(@\\S*)/g\r\n replacer=function(){return ''+arguments[1]+''}\r\n break\r\n default:\r\n return text\r\n }\r\n\r\n let new_text = text\r\n new_text = new_text.replace(regex,replacer)\r\n // new_text = new_text.replace(,'#$1')\r\n return new_text\r\n}\r\n\r\nexport default {scramble, randomUser, randomDate, htmlTagger}","import React from \"react\";\r\nimport \"./Sidebar.css\";\r\nimport SidebarOption from \"./SidebarOption\";\r\nimport ViewSelector from \"./ViewSelector\"\r\n\r\nimport HomeIcon from \"@material-ui/icons/Home\";\r\nimport SearchIcon from \"@material-ui/icons/Search\";\r\n//import NotificationsNoneIcon from \"@material-ui/icons/NotificationsNone\";\r\n//import MailOutlineIcon from \"@material-ui/icons/MailOutline\";\r\n//import BookmarkBorderIcon from \"@material-ui/icons/BookmarkBorder\";\r\n//import ListAltIcon from \"@material-ui/icons/ListAlt\";\r\nimport PermIdentityIcon from \"@material-ui/icons/PermIdentity\";\r\nimport MoreHorizIcon from \"@material-ui/icons/MoreHoriz\";\r\nimport { Avatar, Button, Menu, MenuItem } from \"@material-ui/core\";\r\n\r\nimport PageIcon from \"./media/BarkerLogo.png\";\r\nimport {scramble} from \"./functionals/utils\"\r\nimport dog from \"./media/dog.mp3\"\r\nimport { GET_VIEWERS_URL } from \"./functionals/settings\";\r\n\r\nclass Sidebar extends React.Component {\r\n constructor(props){\r\n super(props)\r\n this.state = {anchorEl: false}\r\n }\r\n\r\n bark() {\r\n const audioEl = document.getElementsByClassName(\"bark-sound\")[0]\r\n audioEl.play()\r\n }\r\n\r\n handleClick = (event) => {\r\n event.preventDefault()\r\n this.setState({anchorEl: Boolean(this.state.anchorEl) ? false:event.currentTarget})\r\n }\r\n\r\n render(){\r\n return (\r\n
\r\n window.open(\"https://github.com/MinhTheMerciless/twitter_clone/wiki\", \"_blank\")} alt=\"Barker Icon\"/>\r\n\r\n \r\n {window.alert(\"Page in progress\")}}/>\r\n \r\n window.open(\"https://github.com/MinhTheMerciless/twitter_clone/wiki\", \"_blank\")}/>\r\n\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Sidebar;\r\n","import React from \"react\";\r\nimport ReactPlayer from 'react-player/lazy';\r\nimport ReactCardFlip from 'react-card-flip';\r\nimport VisibilitySensor from 'react-visibility-sensor';\r\nimport {htmlTagger} from \"./functionals/utils\"\r\n\r\nimport \"./Post.css\";\r\nimport { Avatar, Card, CardMedia } from \"@material-ui/core\";\r\nimport VerifiedUserIcon from \"@material-ui/icons/VerifiedUser\";\r\nimport ChatBubbleOutlineIcon from \"@material-ui/icons/ChatBubbleOutline\";\r\nimport RepeatIcon from \"@material-ui/icons/Repeat\";\r\nimport FavoriteBorderIcon from \"@material-ui/icons/FavoriteBorder\";\r\nimport FavoriteIcon from \"@material-ui/icons/Favorite\"\r\n\r\nclass Post extends React.Component{ \r\n constructor(props){\r\n super(props);\r\n this.state = {isFlipped: false, isPaused: false, blurb: \"\", liked: false}\r\n this.handleClick = this.handleClick.bind(this);\r\n }\r\n\r\n handleClick(e){\r\n e.preventDefault();\r\n this.setState(prevState => ({ isFlipped: !prevState.isFlipped }));\r\n }\r\n\r\n render(){\r\n // Check if react-player can play media\r\n // Falls back to image display if it cannot\r\n let media, text, explanation\r\n const media_url = String(this.props.media)\r\n\r\n if(this.props.explanation===\"\" || this.props.explanation===undefined){\r\n explanation = \"This Bark current does not have an explanation\"\r\n }\r\n else{\r\n explanation = htmlTagger(this.props.explanation, 'link')\r\n }\r\n \r\n text = htmlTagger(htmlTagger(this.props.text, 'hashtag'), 'atSymbol')\r\n \r\n if(media_url.startsWith(\"news:\")){\r\n const news_url = [window.location.origin, \"news\", media_url.substring(5)].join(\"/\")\r\n media = (\r\n \r\n \r\n \r\n
\r\n {this.props.text.split(\" \").slice(0,20).join(\" \")+\"...\"}\r\n
\r\n
\r\n
\r\n )\r\n text = this.props.text\r\n text = text.substring(0, text.length-3)\r\n }\r\n else{\r\n if(ReactPlayer.canPlay(media_url)){\r\n media = (\r\n \r\n {({isVisible}) => {\r\n let w, h\r\n if(window.innerWidth < 420){\r\n h = \"auto\"\r\n w = \"70vw\"\r\n }\r\n else if(window.innerWidth < 1024){\r\n h = \"20vw\"\r\n w = \"35vw\"\r\n }\r\n else{\r\n h = \"40vh\"\r\n w = \"90%\"\r\n }\r\n return(\r\n
\r\n this.setState({isPaused: true})}\r\n config={{\r\n youtube:{playerVars:{controls: 1, disablekb: 1, modestbranding:1, rel:0, color:\"white\"}\r\n }}}>\r\n
\r\n \r\n
\r\n )\r\n }}\r\n \r\n )\r\n console.log(\"play!\")\r\n }\r\n else if (media_url === \"\" || media_url == null){\r\n const img_url = this.props.img\r\n if(img_url){\r\n media = \r\n // console.log(\"here: \" + img_url)\r\n // console.log(media)\r\n }\r\n else media=
\r\n }\r\n else{\r\n media = \"\"/\r\n }\r\n }\r\n\r\n const flipper = (\r\n \r\n {/* Front element */}\r\n

\r\n \r\n {/* Back elemenent */}\r\n

\r\n \r\n )\r\n\r\n return (\r\n

\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n

\r\n {this.props.displayName}{\" \"}\r\n \r\n {this.props.verified && } @\r\n {this.props.username}\r\n \r\n

\r\n
\r\n
\r\n {flipper}\r\n
\r\n
\r\n {media}\r\n \r\n
\r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Post;\r\n","import React from \"react\";\r\nimport axios from \"axios\"\r\n\r\nimport Post from \"./Post\";\r\nimport \"./Feed.css\";\r\nimport ViewSelector from \"./ViewSelector\"\r\n\r\nimport FlipMove from \"react-flip-move\";\r\nimport SearchIcon from \"@material-ui/icons/Search\";\r\nimport PermIdentityIcon from \"@material-ui/icons/PermIdentity\";\r\nimport MoreHorizIcon from \"@material-ui/icons/MoreHoriz\";\r\n\r\nimport {randomUser} from \"./functionals/utils\"\r\nimport settings from \"./functionals/settings\"\r\n\r\n\r\nclass Feed extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {loading: false, queue: false, posts: [], idList: []};\r\n }\r\n \r\n componentDidMount(){\r\n this.addPost(3)\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState){\r\n if(this.state.queue === true){\r\n this.addPost()\r\n this.state.queue = false\r\n }\r\n // Check if Viewer has been changed\r\n if(prevProps.viewer !== this.props.viewer){\r\n this.updateIdList()\r\n }\r\n }\r\n\r\n updateIdList = () => {\r\n this.setState({posts: [], loading: true})\r\n const currentViewer = this.props.viewer\r\n const viewerURL = settings.GET_IDs_FROM_VIEWER_URL + currentViewer + \"/\"\r\n console.log(\"Getting IDs from: \" + viewerURL)\r\n axios\r\n .get(viewerURL)\r\n .then((reponse)=>{\r\n const tweetIds = reponse.data.tweetIds\r\n // console.log(tweetIds)\r\n \r\n this.setState({idList: tweetIds})\r\n this.setState({loading: false})\r\n this.addPost(6);\r\n })\r\n .catch(err=>{console.log(err)})\r\n }\r\n\r\n addPost = (n=1) => {\r\n for(let i=0;i 0;i++){\r\n // console.log(\"Adding post\")\r\n this.setState({loading: true});\r\n // Gets a random ID and removes it from idList\r\n const id = this.state.idList.splice(Math.floor(Math.random() * this.state.idList.length), 1)\r\n const postURL = settings.GET_WHOLE_TWEET_URL + id + \"/\"\r\n // console.log(\"Getting post from: \" + postURL)\r\n\r\n axios\r\n .get(postURL)\r\n .then(reponse => {\r\n this.setState({loading: true})\r\n let post = reponse.data;\r\n\r\n // For random name generation\r\n if(post['username'].startsWith(\"random:\") || post['username']===\"AmericanNews\"){\r\n const fake_user = randomUser()\r\n\r\n post['username'] = fake_user['username'];\r\n post['displayName'] = fake_user['displayName'];\r\n }\r\n\r\n // If the post's image URL contains API redirect, set image url to the API's answer\r\n if(post['media'].startsWith('api:')){\r\n axios\r\n .get(post['media'].substring(4))\r\n .then(media_response => post['media'] = media_response.data)\r\n .catch(err => console.log(err + \"—retrieving from \" + post['media'].substring(4)))\r\n\r\n // Sets image url to a loading gif while waiting for photo\r\n post['media'] = \"https://media4.giphy.com/media/3oEjI6SIIHBdRxXI40/200.gif\"\r\n }\r\n\r\n // If post's text starts with [repeat] tag, put post id back into idList\r\n if(post['text'].startsWith('[repeat]')){\r\n post['text'] = post['text'].substring(8)\r\n this.state.idList.push(id)\r\n }\r\n\r\n if(post['avatar']===null || post['avatar']===\"\"){\r\n post['avatar'] = \"/api/img/ProfilePic/\"+String(Math.round(Math.random()*1000))\r\n }\r\n\r\n // Adds the post into the state\r\n this.setState({posts: this.state.posts.concat(post), loading: false});\r\n \r\n })\r\n .catch((err) => \"Error retrieving post: \" + err)\r\n this.setState({loading: false})\r\n }\r\n \r\n }\r\n\r\n handleScroll = (element) => {\r\n element.preventDefault()\r\n const height_target = Math.round(element.target.scrollHeight - element.target.scrollTop)\r\n\r\n // Check if there are any posts left\r\n if(this.state.idList.length > 0){\r\n // checks if the user has scrolled to the bottom of the element\r\n if (height_target <= Math.ceil(element.target.clientHeight) + 500) {\r\n // only add post if a post isn't already loading\r\n if(this.state.loading === true) {\r\n if(this.state.queue === false){ // Loading and not queuing\r\n this.state.queue = true\r\n }\r\n }\r\n else { // If not loading\r\n this.addPost(2)\r\n } \r\n }\r\n }\r\n else{\r\n console.log(\"Out of posts!\")\r\n // Do something when it runs out of posts\r\n }\r\n }\r\n\r\n moreClick = () => {\r\n console.log(\"Clicked moreClick\")\r\n window.open(\"https://github.com/MinhTheMerciless/twitter_clone/wiki\", \"_blank\")\r\n }\r\n\r\n profileClick = (e) => {\r\n console.log(\"Clicked profileClick\")\r\n this.props.switchClick(e)\r\n }\r\n\r\n exploreClick = () => {\r\n console.log(\"Clicked exploreClick\")\r\n window.alert(\"The explore page is in progress \\n \\\r\n Please don't visit it too much because it's so unoptimized it actually costs me money\")\r\n window.open(\"/explore\", \"_self\")\r\n }\r\n\r\n render() {\r\n let head = null\r\n if(window.innerWidth > 420){\r\n head =

Home

\r\n }\r\n else{\r\n head = \r\n

\r\n
\r\n \r\n \r\n \r\n
\r\n

\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {head}\r\n
\r\n \r\n {this.state.posts.map((post, index) => (\r\n \r\n ))}\r\n \r\n {/* */}\r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\nexport default Feed;","import React from \"react\";\r\nimport axios from \"axios\"\r\nimport \"./NewsCard.css\"\r\nimport {Card, CardImg, CardText, CardBody, Button} from 'reactstrap';\r\n\r\nimport settings from \"./functionals/settings\"\r\n\r\nexport default class NewsCard extends React.Component{\r\n constructor(props){\r\n super(props)\r\n this.state = {text:\"\", media_url:\"\"}\r\n }\r\n\r\n componentDidMount(){\r\n // Gets a random ID and removes it from idList\r\n const postURL = settings.GET_WHOLE_TWEET_URL + this.props.id + \"/\"\r\n axios\r\n .get(postURL)\r\n .then((reponse)=>{\r\n let post = reponse.data;\r\n this.setState({\r\n text: post.text.split(\" \").splice(0,15).join(\" \"), \r\n media_url: post.media\r\n })\r\n })\r\n }\r\n\r\n render(){\r\n const bodyStyle = {\r\n padding:\"20px\", border:\"0\", \r\n borderTop:\"1px solid rgb(235, 238, 240)\", borderBottom: \"1px solid rgb(235, 238, 240)\"\r\n }\r\n\r\n const news_url = [window.location.origin, \"news\", this.state.media_url.substring(5)].join(\"/\")\r\n return(\r\n \r\n \r\n
{this.state.text}
\r\n
\r\n
\r\n )\r\n }\r\n}","import React from \"react\";\r\nimport axios from \"axios\"\r\nimport \"./Widgets.css\";\r\nimport FlipMove from \"react-flip-move\";\r\n\r\nimport NewsCard from \"./NewsCard\"\r\nimport settings from \"./functionals/settings\"\r\n\r\nclass Widgets extends React.Component {\r\n constructor(props){\r\n super(props)\r\n this.state = {idList: [], needUpdate:true, loading: false}\r\n }\r\n\r\n componentDidUpdate(prevProps){\r\n if(prevProps.viewer !== this.props.viewer){\r\n this.updateIdList()\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.updateIdList()\r\n }\r\n\r\n updateIdList = () => {\r\n this.setState({idList: [], loading: true})\r\n const currentViewer = this.props.viewer\r\n const viewerURL = settings.GET_IDs_FROM_VIEWER_URL + currentViewer + \"/\"\r\n console.log(\"Getting news IDs from: \" + viewerURL)\r\n axios\r\n .get(viewerURL)\r\n .then((reponse)=>{\r\n let newsTweetIds = reponse.data.newsTweetIds\r\n // Limit number of ids\r\n const max_length = this.props.max_length\r\n if(max_length!==-1){\r\n newsTweetIds = newsTweetIds.slice(0,newsTweetIds.length>max_length?max_length:newsTweetIds.length)\r\n }\r\n if(max_length == undefined){\r\n newsTweetIds = newsTweetIds.slice(0,newsTweetIds.length>6?6:newsTweetIds.length)\r\n }\r\n console.log(newsTweetIds)\r\n \r\n this.setState({idList: newsTweetIds})\r\n this.setState({loading: false})\r\n })\r\n .catch(err=>{console.log(err)})\r\n }\r\n\r\n\r\n render(){\r\n return (\r\n
\r\n
\r\n
\r\n

Latest News

\r\n
\r\n {\r\n this.state.idList.map((id, index)=>(\r\n \r\n ))\r\n }\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default Widgets;\r\n","import React from \"react\";\r\nimport settings from \"./functionals/settings\"\r\nimport axios from \"axios\";\r\n\r\nimport \"./Article.css\"\r\n\r\nimport {randomDate, scramble} from \"./functionals/utils\"\r\n\r\nclass Article extends React.Component{\r\n constructor(props){\r\n super(props)\r\n this.state={text:\"\", title:\"\", image_url:\"\"}\r\n }\r\n\r\n getArticle(){\r\n console.log(\"Getting article \" + this.props.id)\r\n axios\r\n .get(settings.GET_ARTICLE_FROM_ID_URL + this.props.id + \"/\")\r\n .then((response)=>{\r\n const d = response.data\r\n const text = d.text.replace( // eslint-disable-next-line\r\n /((.*)<\\/a>)?/gi,\r\n function(){return '' + (arguments[7] || arguments[2]) + ''}\r\n )\r\n let title\r\n // If there's no title, scramble the first 6 words to make the title\r\n if(d.title === null || d.title === \"\"){ \r\n let newArr = []\r\n String(d.text).split(\" \").slice(0,6).forEach(word => {\r\n newArr.push(scramble(word))\r\n });\r\n title = newArr.join(\" \").replace(\".\", \"\")\r\n }\r\n else{\r\n title = d.title\r\n }\r\n this.setState({title:title, text:text})\r\n this.forceUpdate()\r\n })\r\n .catch(err=>{console.log(err)})\r\n }\r\n \r\n componentDidMount(){\r\n this.getArticle()\r\n }\r\n\r\n render(){\r\n console.log(\"Article with id: \" + this.props.id)\r\n return(\r\n \r\n \r\n \r\n \r\n