{"version":3,"sources":["types/backend/dsocial/dsocial.did.js","types/backend/feedback/feedback.did.js","types/backend/dsocial/index.js","types/backend/feedback/index.js","lib/agent.ts","lib/icp.ts","lib/numbers.ts","lib/ago.ts","components/Button/Button.module.scss","components/Pay/Pay.module.scss","components/Feedback/Feedback.tsx","App.tsx","index.tsx","components/Feedback/Feedback.module.scss","hooks/useUser.ts","hooks/useLogin.tsx","components/Button/Button.tsx","components/SideMenu/SideMenu.module.scss","config/index.ts","pages/Login/Login.module.scss","lib/generateThumbnailUrl.ts","pages/Channel/Channel.module.scss","components/CachedImage/CachedImage.tsx","components/Logo/Logo.tsx","translations/i18n.ts","translations/en/translations.ts","translations/de/translations.ts","translations/zh/translations.ts","translations/ja/translations.ts","translations/ru/translations.ts","translations/vi/translations.ts","translations/hi/translations.ts","components/Tabs/Tabs.module.scss","pages/ThankYou/ThankYou.module.scss","pages/EditVideo/EditVideo.module.scss","hooks/useColorScheme.ts","components/menuItems/MenuItems.tsx","components/SideMenu/SideMenu.tsx","components/Header/Header.tsx","components/Page/Page.tsx","components/UserProvider/UserProvider.tsx","lib/generateVideoUrl.ts","lib/trackClick.ts","lib/duration.ts","components/HlsSource/HlsSource.tsx","components/TrackImpression/TrackImpression.tsx","pages/Home/Home.module.scss","types/Theme.ts","types/ColorScheme.ts","types/UserPermission.ts","components/Header/Header.module.scss","components/Loading/Loading.module.scss","components/menuItems/MenuItems.module.scss","pages/Monetisation/Monetisation.module.scss","pages/PaidSubscriptions/PaidSubscriptions.module.scss","components/Logo/Logo.module.scss","config/tags.ts","pages/Upload/Upload.module.scss","config/moderators.ts","pages/Home/enums.ts","pages/Home/Sorting.tsx","pages/Home/Home.tsx","pages/logout.tsx","hoc/withAuthCheck.tsx","pages/Login/Login.tsx","lib/canvas.ts","pages/Account/Account.tsx","lib/db.ts","lib/upload.ts","pages/Upload/Upload.tsx","config/assetCategories.ts","pages/404.tsx","lib/cache.ts","lib/trackWatchTime.ts","utils/common.ts","pages/Video/Video.tsx","pages/Channel/Channel.tsx","pages/GettingStarted/GettingStarted.tsx","pages/UploaderApp/UploaderApp.tsx","pages/Download/Download.tsx","pages/Top/Top.tsx","pages/Migrate/Migrate.tsx","pages/GetVerified/GetVerified.tsx","pages/SetVerifiedStatus/SetVerifiedStatus.tsx","pages/ThankYou/ThankYou.tsx","pages/Search/Search.tsx","pages/Progress/Progress.tsx","pages/Subscriptions/Subscriptions.tsx","pages/Rpc/Rpc.tsx","pages/Privacy/Privacy.tsx","pages/FirstPayable/FirstPayable.tsx","pages/Feedback/Feedback.tsx","pages/ContentModeration/ContentModeration.tsx","pages/Admin/Admin.tsx","pages/Monetisation/Monetisation.tsx","pages/PaidSubscriptions/PaidSubscriptions.tsx","pages/Analytics/Analytics.tsx","pages/EditVideo/EditVideo.tsx","pages/index.ts","components/Page/Page.module.scss","pages/MobileAuth/MobileAuth.tsx","components/ThemeProvider/ThemeProvider.tsx","components/Loading/Loading.tsx","components/VideoBoxHome/VideoBoxHome.tsx","components/ErrorBox/ErrorBox.tsx","components/Pay/Pay.tsx","components/Tabs/Tabs.tsx","lib/profilePhoto.ts","components/ErrorBox/ErrorBox.module.scss","components/VideoBoxHome/VideoBoxHome.module.scss","pages/Account/Account.module.scss","lib/dt.ts","pages/Home/Sorting.module.scss","pages/Search/Search.module.scss","components/CachedImage/CachedImage.module.scss","pages/Video/Video.module.scss","assets/verified.svg"],"names":["idlFactory","IDL","VideoId","Text","AddCommentResponse","Record","GetLogMessagesFilter","Nat32","Opt","Nanos","Nat64","GetLogMessagesParameters","GetLatestLogMessagesParameters","CanisterLogRequest","Variant","Null","CanisterLogFeature","CanisterLogMessagesInfo","Vec","LogMessagesData","CanisterLogMessages","CanisterLogResponse","MetricsGranularity","GetMetricsParameters","Nat","UpdateCallsAggregatedData","CanisterHeapMemoryAggregatedData","CanisterCyclesAggregatedData","CanisterMemoryAggregatedData","HourlyMetricsData","Int","NumericEntity","DailyMetricsData","CanisterMetricsData","CanisterMetrics","UserId","ChannelStats","Float64","CommentId__1","CommentId","UserId__1","VideoId__1","Comment__1","DailyPayments","Report","Asset__1","Video","User","VideoAndUser__1","Bool","ReportAndVideo","UserAndPermissions","PaidSubscription","UserAndPaidSubscription","VideoAndUser","StateStats","SubscriptionPayment","User__1","TopChannel","MonitizationSetting__1","WalletAddress__1","UserMonitizationSetting","Video__1","VerifiedAccountStatus","UserAndVerifiedAccountStatus","Comment","CommentInfo","VideoStats","UserPayment","UserAndPayment","UpdateUserResponse","WalletAddress","MonitizationSetting","Asset","UploadVideoResponse","Service","Func","Principal","Tuple","canisterId","options","agent","HttpAgent","agentOptions","Actor","createActor","actorOptions","process","DSOCIAL_CANISTER_ID","Feedback__1","FEEDBACK_CANISTER_ID","host","IC_HOST","loadAuthClientPromise","authClient","loadBackendActorPromise","backend","loadAuthClient","Promise","async","AuthClient","create","resolve","getAuthClient","loadBackendActor","identity","getIdentity","BACKEND_CANISTER_ID","getBackendActor","isAuthenticated","isLoggedIn","userData","getUserData","userPermissions","principal","getPrincipal","isAnonymous","getBackend","userPermissionsResult","getUserPermissions","length","rawUserPermissions","map","perm","Usergeek","setPrincipal","trackSession","callbacks","addAuthChangedListener","callback","indexOf","push","removeAuthChangedListener","index","splice","updateAuthChangedListeners","forEach","e","clientId","CLIENT_ID_KEY","getClientId","window","localStorage","getItem","replace","c","r","Math","random","toString","setItem","login","expiry","Date","now","daysToAdd","onSuccess","location","href","identityProvider","IDENTITY_PROVIDER_URL","maxTimeToLive","BigInt","getFeedbackBackend","FeedbackIdlFactory","FEEDBACK_BACKEND_CANISTER_ID","getFeedbackBackendActor","userResults","logout","returnTo","renderNumbers","num","translationIdPrefix","t","newNum","Number","number","toFixed","round","TimeAgo","addDefaultLocale","en","addLocale","de","zh","ja","ru","vi","hi","timeAgo","navigator","language","setTimeAgoLocale","code","ago","when","newWhen","format","module","exports","Item","label","children","htmlFor","className","styles","item","types","Feedback","embedMode","pathname","toLowerCase","startsWith","useUser","useTranslation","open","setOpen","useState","submitted","setSubmitted","currentType","setType","name","setName","userName","feedback","setFeedback","toggleOpen","useCallback","submit","setTimeout","addFeedback","container","type","i","classname","feedbackType","first","last","selected","onClick","value","onChange","target","id","placeholder","Sentry","dsn","integrations","Integrations","BrowserTracing","tracesSampleRate","init","apiKey","pages","Object","entries","pagesObject","App","wrongUrl","useEffect","ReactRouterRoute","Route","key","path","component","ReactDOM","render","document","getElementById","useContext","UserContext","LoginResponse","Button","backgroundColor","loading","disabled","icon","secondary","cancel","small","inline","subtle","invert","cn","button","rel","style","undefined","to","color","size","isLocal","pick","localValue","prodValue","IPFS_BASE_URL","ASSET_BASE_URL","USE_WALLET","AR_WEAVE_CONFIG","port","protocol","logging","logger","console","log","AR_WEAVE_HOST","IPFS_CONFIG","headers","authorization","Buffer","AR_ENABLED","CLOUD_UPLOAD","CS_CDN","before","after","CLOUD_TRANSCODING","AR_CDN","BADGE_CHECKOUT_ID","VERIFIED_PRICE_ID","FUNCTIONS_URL","IS_LOCAL","generateThumbnailUrl","video","thumb","hash","preloadingState","CachedImage","src","rest","cachedSrc","setCachedSrc","user","setUser","useHistory","substring","cacheKey","sha1","cacheHit","image","Image","start","setAttribute","onload","canvas","createElement","width","height","ctx","getContext","drawImage","dataUrl","toDataURL","preloadImage","user_list","url","analytics","monetisation","account","paidSubscriptions","cachedimg_wrap","cach_img","avatar_wrap","avatar_content","avatar_head","avatar_head_img","alt","avatar_head_ul","avatar_head_ul_name","avatar_head_ul_bottom","str","startIndex","endIndex","slice","intercept_str","input","body","appendChild","select","execCommand","removeChild","copy_text","cach_list","cach_list_box","cach_list_img","cach_list_name","Logo","hideText","disableResponsive","logo","title","logo_phone","languages","changeLanguage","i18n","use","LanguageDetector","initReactI18next","lng","i18nextLng","resources","translation","homePageTitle","footer","headerMyChannel","headerUpload","headerMyAccount","headerSignUpOrLogin","accountErrorUserNameEmpty","accountErrorProfilePhotoFailed","accountErrorUserNameAlreadyTaken","accountError","accountErrorValidImage","accountErrorFailedResize","accountPageTitle","accountUpdated","accountUserNameLabel","accountChannelNameLabel","accountProfilePhotoLabel","accountResizingPhoto","accountDone","accountCancel","accountLoadingPhoto","accountChoosePhoto","accountUploadingPhoto","accountUpdatingAccountDetails","accountUpdateAccountDetails","accountLogout","monetisationPageTitle","monetisationUpdated","monetisationICPAddress","monetisationICPAddressDesc","monetisationMonthlySubscription","monetisationMonthlySubscriptionDesc","monetisationUpdatingDetails","monetisationUpdateDetails","channelFailedToLoad","channelFailedToLoadVideos","subscribers","subscribersK","subscribersM","subscribersNone","subscribe","subscribed","join","joined","channelNoVideos","views","viewsK","viewsM","viewsNone","loginPageTitle","loginIfNotRegistered","loginSignUpButton","loginIfRegistered","loginButton","uploadDropHere","uploadFailedResize","uploadErrorSelectThumbnail","uploadErrorTransactionId","uploadErrorVideoFile","uploadErrorFailedUpload","uploadErrorVideoFailedUpload","uploadPageTitle","uploadInstallArConnect","uploadFirstTime","uploadThumbnailUploaded","uploadThumbnailUploading","uploadVideoUploaded","uploadVideoUploading","uploadVideoCreated","uploadVideoCreating","uploadSelectThumbnail","uploadResizingPhoto","uploadDone","uploadCancel","uploadDropLabel","uploadSelectThumbnailError","uploadYourVideoWith","uploadSelectVideo","uploadPlaceholderTransactionId","uploadDropVideo","uploadErrorDropVideo","uploadEnterTitle","uploadPlaceholderTitle","uploadEnterVideoDesc","uploadPlaceholderDesc","uploadButton","uploadErrorUploadToArWeaveFailed","uploadErrorTranscodingFailed","uploadThumbnailUploadedToARWeave","uploadThumbnailUploadingToARWeave","uploadVideoUploadedToARWeave","uploadVideoUploadingToARWeave","uploadVideoTranscoded","uploadVideoTranscoding","uploadFileTooBig","video1Like","videoLikes","videoLike","videoComments","videoAddPublicComment","videoCancelButton","videoSubmitButton","videoShare","videoEmbed","videoTip","videoFlag","videoTipTitle","videoTipChooseAmount","videoTipPay","videoTipConfirmInstallPlug","videoTipProcessingPayment","videoTipPaid","videoTipPaidThankYou","videoTipAnon","videoTipComment","videoJoinTitle","notFoundError","notFoundTitle","notFoundContent","topTitle","searchPlaceholder","sorting_recommended","sorting_hot","sorting_most_viewed","sorting_top_rated","sorting_newest","sorting_daily","sorting_weekly","sorting_monthly","sorting_yearly","sorting_all_time","feedbackSendFeedback","feedbackCloseForm","feedbackFeedbackType","feedbackName","feedbackPlaceholder","feedbackSendFeedbackFormButton","feedbackFeedbackType_general","feedbackFeedbackType_bug","feedbackFeedbackType_idea","feedbackSubmitted","sideMenuHome","sideMenuUpload","sideMenuMyChannel","sideMenuLanguage","sideMenuMyAccount","sideMenuLoginOrRegister","sideMenuOpen","sideMenuClose","sideMenuReviewFlagged","sideMenuLogout","sideMenuPaidSubscriptions","sideMenuMonetisation","sideMenuAnalytics","contentModerationFlaggedContent","contentModerationUserManagement","tipsLng","tipsContentLng","uploaderAppPageTitle","uploaderAppDesc","uploaderAppDownload","uploaderAppNotAvailable","gettingStartedTitle","gettingStartedPara1","gettingStartedPara2","gettingStartedPara3","gettingStartedHeading1","gettingStartedPara4","gettingStartedGetArConnect","gettingStartedHeading2","gettingStartedPara5","gettingStartedPara6","gettingStartedTransak","gettingStartedRamp","gettingStartedHeading3","gettingStartedPara7","gettingStartedHeading4","gettingStartedPara8","fallbackLng","stored","defaultColorScheme","parseInt","useColorScheme","cs","colorScheme","setColorScheme","handleChange","newColorScheme","matches","ColorScheme","Dark","Light","matchMedia","mediaWatch","addEventListener","removeEventListener","MENU_ITEMS","MenuItems","props","history","currentUrl","setCurrentUrl","search","content_wrap_sidebar_head","from","hide","showTips","go_to","SideMenu","focusUser","setFocusUser","side_wrap","following_wrap","following_title","following_ul","generateUrl","channel","imgUrl","following_username","fol_bottom","fol_arrow","side_wrap_phone","Search","params","URLSearchParams","query","setQuery","get","focussed","setFocussed","onSubmit","preventDefault","trim","encodeURIComponent","focus","phone_img","hidePhoneSearch","onFocus","onBlur","Header","loggedIn","chooseLanguage","setChooseLanguage","showSearch","setShowSearch","showPhoneSideMenu","setShowPhoneSideMenu","acquiesceLng","click_multilingual","header","left","right","right_lng","right_lng_img","languages_box_wrap","languages_box_hover","select_li","upload_link","upload_img","generateProfilePhotoUrl","profilePhoto","loggedOut","toLogin","header_phone","setProperty","header_phone_img","header_phone_right","common_img","right_lng_phone","right_lng_phone_img","header_search_wrap","header_back","phone_side_menu","phone_side_menu_box","phone_side_menu_head","removeProperty","year","getFullYear","Page","disableFooter","center","showModal","setShowModal","loginModal","setLoginModal","signUp","Helmet","defer","content","pkg","version","content_wrap","content_wrap_sidebar","tips_wrap","tips_box","tips_box_head","tips_box_head_name","tips_box_head_img","tips_box_middle","tips_box_bottom","login_wrap","login_box","login_box_head","login_box_head_left","login_box_head_right","login_box_title","login_box_ul","login_box_ul_one","login_box_ul_two","mgb_30","login_box_bottom","Trans","i18nKey","initialValue","createContext","UserProvider","setLoading","setLoggedIn","currentUserData","setUserData","currentUserPermissions","setUserPermissions","then","isAuthenticatedResult","authWatcher","updateIsLoggedIn","newUserData","Provider","generateVideoUrl","assets","vid","find","category","trackClick","videoId","caller","getCallerInfo","res","incrementClicks","getDt","warn","durationCache","convertDuration","duration","friendlyDuration","toISOString","HlsSource","autoPlay","detectMobile","useMobileDetect","hls","Hls","xhrSetup","xhr","parts","split","txId","splitter","newUrl","isSupported","loadSource","attachMedia","on","Events","MANIFEST_PARSED","isMobile","play","destroy","isVideoChild","trackCount","TrackImpression","lastTrack","setLastTrack","trackTimeout","setTrackTimeout","ref","useInViewEffect","entry","isIntersecting","cb","incrementImpressions","trackImpression","clearTimeout","threshold","Theme","UserPermission","Tags","SortBy","TimeRange","SORT_LIST","values","TIME_RANGE_LIST","Hot","IoFlashSharp","Newest","IoLeafSharp","Sorting","sortBy","timeRange","isSubs","setIsSubs","sort_head","sortById","head_selected","sort_times","timeRangeId","time_selected","subscriptions_wrap","subscriptions_title","subscriptions_content","subscriptions_content_left","subscriptions_content_left_ul","subscriptions_content_left_ul_img","subscriptions_content_left_ul_name","subscriptions_content_left_ul_hover","subscriptions_content_right","paramSupport","getFromDate","newTimeRange","mo","moment","Daily","subtract","Weekly","Monthly","Yearly","valueOf","convertMomentToBigInt","Home","videos","setVideos","previewVideoId","setPreviewVideoId","loadingVideos","setLoadingVideos","loadingMore","setLoadingMore","hasMore","setHasMore","defaultSort","defaultTime","setSortBy","setTimeRange","approvalMode","moderators","load","append","offset","maxResults","newSortBy","recommendedVideosResult","getRecommendedWithTags","Reviewed","getVideosWithTagsAndSort","CopyrightedContent","Illegal","Nsfw","AllTime","videosList","error","onVideoMouseOver","updateTag","tag","newVideosList","findIndex","updateTags","sortOnChange","dataLength","next","loader","verified","preview","Logout","withAuthCheck","ChildComponent","isAnon","WithAuthHOC","router","displayName","login_wrap_head","login_wrap_head_title","login_wrap_head_box","login_wrap_first_title","login_wrap_first_button","createImage","reject","getRadianAngle","degreeValue","PI","getCroppedImg","imageSrc","pixelCrop","rotation","maxSize","max","safeArea","sqrt","translate","rotate","data","getImageData","putImageData","x","y","PROFILE_PHOTO_FILE_TYPES","ipfs","inputFile","useRef","loadingUser","updated","setUpdated","setUserName","updating","setUpdating","setError","channelName","setChannelName","setProfilePhoto","crop","setCrop","zoom","setZoom","imageToCrop","setImageToCrop","croppedImage","setCroppedImage","pixels","setPixels","loadingChoosePhoto","setLoadingChoosePhoto","resizingPhoto","setResizingPhoto","uploadingPhoto","setUploadingPhoto","onCropComplete","croppedArea","croppedAreaPixels","choosePhoto","current","click","failedResize","account_page","account_title","newProfilePhotoHash","blob","fetch","newProfileHash","file","onUploadProgress","add","progress","bytes","pin","ipfsUpload","preloadProfilePhoto","isUserNameAvailable","checkUsernameAvailable","updateAccountDetails","updateUser","status","form","left_name","autoFocus","valign","cropper","cropperContainer","aspect","onCropChange","onZoomChange","cropShape","showGrid","cropperButtons","left_btn","newCroppedImage","onerror","right_btn","display","files","imageFile","filter","fileType","reader","FileReader","result","readAsDataURL","accept","choose_photo","colSpan","buttons_bottom","left_update","right_logout","initializeApp","authDomain","projectId","storageBucket","messagingSenderId","appId","storage","getStorage","fs","getFirestore","collectionName","onSnapshot","doc","exists","err","uploadToCloud","fileName","progressFn","filePath","uploadTask","uploadBytesResumable","contentType","snapshot","ceil","bytesTransferred","totalBytes","state","getDownloadURL","arweave","Arweave","upload","arweaveUpload","newBlob","ar","getArrayBuffer","Blob","wallets","generate","thumbBuffer","transaction","getTransaction","mpdFee","winstonToAr","reward","transactions","sign","uploader","getUploader","isComplete","uploadChunk","pctComplete","uploadedChunks","totalChunks","onloadend","readAsArrayBuffer","byteLength","createTransaction","addTag","Dropper","onDrop","onError","dropLabel","fileTypes","invalidFileTypeError","onDropInternal","acceptedFiles","_","_2","getRootProps","getInputProps","isDragActive","useDropzone","dropper","active","svg_box","upload_title","InfoBox","infoBox","fileExtension","pop","processFile","setProgress","originalProgress","progressObj","axios","post","unsubscribe","failed","completed","uploadedFailed","uploaded","transactionId","videoLength","icUrl","uploadedToARWeave","uploadARWeaveProgress","uploadProgress","transcodingProgress","transcoded","Error","videoFile","setVideoFile","thumbnailBuffer","setThumbnailBuffer","uploading","setUploading","invalidThumbnail","setInvalidThumbnail","invalidVideo","setInvalidVideo","setTitle","description","setDescription","setTransactionId","noArWallet","setNoArWallet","gettingStarted","thumbnail","record","uploadForm","event","bal","address","jwkToAddress","winston","getBalance","imageFileName","uuid","thumbPath","thumbIcPath","imageTransaction","message","videoPath","videoFileName","videoTransaction","uploadResult","uploadVideo","newVideoId","videoSlug","slugify","lower","strict","thumb_first_title","upload_svg_img","cropperButtons_done","cropperButtons_cancel","picked","picked_thumbnailBuffer","uploaderApp","title_title","common_input","required","autoComplete","desc_title","textarea","getElementsByTagName","scrollHeight","upload_submit","NotFound","cache","getCacheItem","setCacheItem","trackWatchTime","watchTime","watchTimeRate","incrementWatchTime","Modal","setAppElement","SourceTag","linkProperties","timestampRegex","replaceTimestamps","a","convertDurationToSeconds","copyLink","msg","clipboard","writeText","alert","trackInterval","TIPS","Watch","screenHeight","useWindowHeight","playerRef","realUser","secondsStart","useParams","skipTo","isNaN","recommended","setRecommended","modalIsOpen","setModalIsOpen","paying","setPaying","loadingRecommended","setLoadingRecommended","cachedVideo","cachedChannel","userId","loadingVerified","setLoadingVerified","setVerified","details","setDetails","setChannel","comments","setComments","videoTips","setVideoTips","commentsAndTips","setCommentsAndTips","totalTips","setTotalTips","desc","setDesc","loadingSubscribers","setLoadingSubscribers","setSubscribers","newComment","setNewComment","newCommentFocussed","setNewCommentFocussed","notFound","setNotFound","setSubscribed","selectedTip","setSelectedTip","toggleSubscribeRunning","setToggleSubscribeRunning","addingComment","setAddingComment","showPlaceholder","setShowPlaceholder","loadingIsSubscribed","setLoadingIsSubscribed","hasLiked","setHasLiked","loadingHasLiked","setLoadingHasLiked","playNextEnabled","setPlayNextEnabled","icpAddress","setIcpAddress","tipPaid","setTipPaid","monthlySubscription","setMonthlySubscription","commentsCount","setCommentsCount","likesCount","setLikesCount","likes","showReadMore","setShowReadMore","readMoreOpen","setReadMoreOpen","played","setPlayed","joiningPaid","setJoiningPaid","videoWrapperRef","videoPlayerHeight","clientWidth","flagged","tags","some","prohibited","oldEmbedUrl","loadingIsPaidSubscriber","setLoadingIsPaidSubscriber","togglePaidSubscriberRunning","setTogglePaidSubscriberRunning","isPaidSubscriber","setIsPaidSubscriber","togglePaidSubscriber","setShowJoinModal","showJoinModal","descRef","node","getBoundingClientRect","protect","safe","toggleSubscribe","loadComments","getVideoComments","commentsResult","commentRecords","getVideoTips","videoTipsResult","newTotalTips","payment","amount","addLike","tip","reportVideo","makeTip","ic","plug","confirm","loadingPrice","usdIcpPrice","icpToPay","json","parseFloat","items","price","requestConnect","commission","commissionIcp","tipIcp","payingInfo","requestTransfer","commissionPaid","recordPayment","catch","onRequestClose","addComment","newCommentText","newDummyComment","comment","replies","newCommentId","clearInterval","newCommentsAndTips","sort","b","whenA","whenB","joinPaid","monthlyIcp","joinPaidSubscription","onEnded","onPlaying","setInterval","getState","player","watchTimeInSeconds","TRACK_INTERVAL_IN_MS","playbackRate","watchTimeInMinutes","onWaiting","onPause","onCanPlay","seek","currentTime","embed","hasLikedResult","videoResults","getVideo","getUser","channelInfo","loadVideoRecommendations","getVideoRecommendations","rawResults","searchResults","getUserMonitizationSettingsById","monitization","monitizationResult","addresses","settings","icp","monthlySub","getVerifiedStatus","isVerified","isSubscribed","isPaidSubscriberResult","getSubscriberCount","subscriberCountResults","incrementView","thumbUrl","videoUrl","hlsEnabled","Source","playsInline","poster","onLoadedData","fluid","embedTitle","embedProfilePhoto","embedTitleText","embedLogo","rates","order","sections","videoAndComments","videoWrapper","underVideo","details_title","viewsAndWhen","viewAndLikeBar","seperator","toLocaleString","minimumFractionDigits","likesAndShares","like","liked","share","incrementShares","creator","creator_left","creator_middle","principal_wrap","foll","subscribeButtonWrapper","join_btn","subs_btn","descInner","components","p","properties","match","readMore","commentsSection","newCommentButtons","form_cancel","form_sub_fouc","form_sub","creatorComment","markdown","recommended_title","recommendationRow","actual","imageProps","crossOrigin","recommendationCol","recommendationCol_head","recommendationCol_bottom","portalClassName","modal","overlayClassName","overlay","isOpen","contentLabel","modalContent","paying_head","iconButton","usdPrice","paying_middle","paying_tips","classnames","paying_buttons","joinModal","joinModal_head","head_title","joinModal_middle","buttons","Channel","setUserId","isPayOpen","setIsPayOpen","totalViews","setTotalViews","verifiedPrice","setVerifiedPrice","onRequestClosePay","getUserIdFromUserName","getUserIdFromUserNameResult","channelId","getUserVideos","userVideoResults","videoList","viewsCount","getUserResult","loadPrice","hideChannelInfo","edit","productName","checkoutId","onPaymentDetected","setVerifiedStatusResult","setVerifiedStatus","GettingStarted","os","userAgent","platform","test","getOS","UploaderApp","download","supportedOperatingSystems","mac","Download","clean","dl","goBack","Top","channels","setChannels","getTopChannels","topChannels","list","subscriberCount","Migrate","thumbnailTransactionId","videoTransactionId","getParams","setVideoId","thumbTid","setThumbTid","videoTid","setVideoTid","setVideoLength","updateVideo","updateVideoAssets","GetVerified","channelPath","SetVerifiedStatus","setVerifiedStatusManual","ThankYou","users","setUsers","getVerifiedUsers","profilePlaceholder","toLocaleDateString","useQueryParam","StringParam","results","setResults","time","setTime","cleanQuery","newResults","scrollTo","top","videoLengthRecord","info","getRandomColor","floor","Progress","screenWidth","useWindowWidth","setData","getProgress","getChannelStats","getDailyPayments","getSubscriptionPaymentsItems","dailyPayments","subPayments","getTime","dt","ctr","clicks","avgViewDuration","shares","impressions","uniqueViews","payments","pDt","sps","sp","numberOfPayments","gmv","subscriptions","count","date","channelStats","getStats","LineChart","XAxis","dataKey","YAxis","domain","Tooltip","wrapperStyle","borderColor","contentStyle","labelStyle","fontWeight","prop","Line","dot","stroke","subs","setSubs","getSubscriptions","rawSubs","Rpc","ReactNativeWebView","webView","messageHandler","actor","icpActor","postMessage","JSON","stringify","Privacy","FirstPayable","setSettingsList","settingsList","getUserMonitizationSettingsList","all","setting","setList","feedbackList","getFeedbackList","tagsList","Approved","tagColors","loadingFlagged","setLoadingFlagged","loadingModerators","setLoadingModerators","setModerators","selectedTab","setSelectedTab","updatingPerms","setUpdatingPerms","newModeratorUserName","setNewModeratorUserName","newModeratorPerms","setNewModeratorPerms","addingModerator","setAddingModerator","loadUsers","mods","getModerators","permissions","every","Owner","Admin","Moderator","getFlaggedVideos","loadFlagged","reportId","reportResult","updateReport","setPermission","newPermission","idx","newModerators","deleteMod","updatePerms","success","submitModeratorForm","userIdResults","tabs","report","shouldShow","dataStats","setDataStats","dataStatsResult","getDataStats","variable","len","userMonitizationSettings","setUserMonitizationSettings","userMonitizationSettingsResult","getUserMonitizationSettings","currentUserMonitizationSettings","newAddresses","newSettings","updateUserMonitizationSettings","paddingTop","paddingRight","maxWidth","fontSize","minWidth","defaultValue","decimalsLimit","prefix","onValueChange","getMyPaidSubscriptions","paidSubs","rec","sub","subscription","setChannelStats","generateDesc","average","sum","generateChart","percent","tickFormatter","val","getDailyChannelStats","Login","Account","thankYou","Upload","contentModeration","ContentModeration","admin","migrate","editVideo","setVideo","loadingVideo","setLoadingVideo","videoItem","updateResult","saveVideo","rows","padding","flexDirection","deleteResult","deleteVideo","Subscriptions","PaidSubscriptions","Analytics","Monetisation","rpc","mobileAuth","MobileAuth","privacy","firstPayable","home","newPath","REACT_APP_TEST_MOBILE_AUTH_PRINCIPAL","testPrincipal","REACT_APP_TEST_MOBILE_AUTH_DELEGATION","testDelegationJson","REACT_APP_TEST_MOBILE_AUTH_KEYS","testKeyJson","isTestMode","openApp","keyJson","delegationsJson","key64","delegations64","appUrl","DelegationIdentity","delegationIdentity","_inner","toJSON","getDelegation","alignItems","justifyContent","theme","BG","TEXT","SHADOW","HEADER_BG","OTHER_BG","SUBTLE_TEXT","SIDE_MENU_SELECTED","SIDE_MENU_HOVER","SIDE_MENU_HOVER_TEXT","DARK_THEME","LIGHT_THEME","ThemeContext","ThemeProvider","newCssVariables","cssVars","rootElement","variables","head","innerHTML","remove","Loading","MiniVideo","loop","VideoBoxHome","onVideoMouseOut","detect","wrapperStyles","imageStyles","wrapperWidth","imageWidth","useStyles","videoBoxWrapper","videoBoxHome","onMouseOver","onMouseOut","approvalTools","right_left","ErrorBox","Pay","mode","setMode","picker","option","memo","Tabs","tabsContainer","tab","spacer","hashPreloading","isPreloading","tempImage","profilePhotoHash","force","tempBase64Image","_g","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","this","SvgVerified","_ref","svgRef","titleId","viewBox","d","ForwardRef"],"mappings":"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","file":"static/js/main.85ba331a.chunk.js","sourcesContent":["export const idlFactory = ({ IDL }) => {\n const VideoId = IDL.Text;\n const AddCommentResponse = IDL.Record({\n 'status' : IDL.Text,\n 'newCommentId' : IDL.Text,\n });\n const GetLogMessagesFilter = IDL.Record({\n 'analyzeCount' : IDL.Nat32,\n 'messageRegex' : IDL.Opt(IDL.Text),\n 'messageContains' : IDL.Opt(IDL.Text),\n });\n const Nanos = IDL.Nat64;\n const GetLogMessagesParameters = IDL.Record({\n 'count' : IDL.Nat32,\n 'filter' : IDL.Opt(GetLogMessagesFilter),\n 'fromTimeNanos' : IDL.Opt(Nanos),\n });\n const GetLatestLogMessagesParameters = IDL.Record({\n 'upToTimeNanos' : IDL.Opt(Nanos),\n 'count' : IDL.Nat32,\n 'filter' : IDL.Opt(GetLogMessagesFilter),\n });\n const CanisterLogRequest = IDL.Variant({\n 'getMessagesInfo' : IDL.Null,\n 'getMessages' : GetLogMessagesParameters,\n 'getLatestMessages' : GetLatestLogMessagesParameters,\n });\n const CanisterLogFeature = IDL.Variant({\n 'filterMessageByContains' : IDL.Null,\n 'filterMessageByRegex' : IDL.Null,\n });\n const CanisterLogMessagesInfo = IDL.Record({\n 'features' : IDL.Vec(IDL.Opt(CanisterLogFeature)),\n 'lastTimeNanos' : IDL.Opt(Nanos),\n 'count' : IDL.Nat32,\n 'firstTimeNanos' : IDL.Opt(Nanos),\n });\n const LogMessagesData = IDL.Record({\n 'timeNanos' : Nanos,\n 'message' : IDL.Text,\n });\n const CanisterLogMessages = IDL.Record({\n 'data' : IDL.Vec(LogMessagesData),\n 'lastAnalyzedMessageTimeNanos' : IDL.Opt(Nanos),\n });\n const CanisterLogResponse = IDL.Variant({\n 'messagesInfo' : CanisterLogMessagesInfo,\n 'messages' : CanisterLogMessages,\n });\n const MetricsGranularity = IDL.Variant({\n 'hourly' : IDL.Null,\n 'daily' : IDL.Null,\n });\n const GetMetricsParameters = IDL.Record({\n 'dateToMillis' : IDL.Nat,\n 'granularity' : MetricsGranularity,\n 'dateFromMillis' : IDL.Nat,\n });\n const UpdateCallsAggregatedData = IDL.Vec(IDL.Nat64);\n const CanisterHeapMemoryAggregatedData = IDL.Vec(IDL.Nat64);\n const CanisterCyclesAggregatedData = IDL.Vec(IDL.Nat64);\n const CanisterMemoryAggregatedData = IDL.Vec(IDL.Nat64);\n const HourlyMetricsData = IDL.Record({\n 'updateCalls' : UpdateCallsAggregatedData,\n 'canisterHeapMemorySize' : CanisterHeapMemoryAggregatedData,\n 'canisterCycles' : CanisterCyclesAggregatedData,\n 'canisterMemorySize' : CanisterMemoryAggregatedData,\n 'timeMillis' : IDL.Int,\n });\n const NumericEntity = IDL.Record({\n 'avg' : IDL.Nat64,\n 'max' : IDL.Nat64,\n 'min' : IDL.Nat64,\n 'first' : IDL.Nat64,\n 'last' : IDL.Nat64,\n });\n const DailyMetricsData = IDL.Record({\n 'updateCalls' : IDL.Nat64,\n 'canisterHeapMemorySize' : NumericEntity,\n 'canisterCycles' : NumericEntity,\n 'canisterMemorySize' : NumericEntity,\n 'timeMillis' : IDL.Int,\n });\n const CanisterMetricsData = IDL.Variant({\n 'hourly' : IDL.Vec(HourlyMetricsData),\n 'daily' : IDL.Vec(DailyMetricsData),\n });\n const CanisterMetrics = IDL.Record({ 'data' : CanisterMetricsData });\n const UserId = IDL.Text;\n const ChannelStats = IDL.Record({\n 'ctr' : IDL.Float64,\n 'clicks' : IDL.Int,\n 'avgViewDuration' : IDL.Float64,\n 'shares' : IDL.Int,\n 'views' : IDL.Int,\n 'watchTime' : IDL.Float64,\n 'impressions' : IDL.Int,\n 'likes' : IDL.Int,\n 'uniqueViews' : IDL.Int,\n 'watchTimeRate' : IDL.Float64,\n 'subscribers' : IDL.Int,\n 'comments' : IDL.Int,\n 'totalWatchTimeRate' : IDL.Float64,\n });\n const CommentId__1 = IDL.Text;\n const CommentId = IDL.Text;\n const UserId__1 = IDL.Text;\n const VideoId__1 = IDL.Text;\n const Comment__1 = IDL.Record({\n 'id' : CommentId,\n 'userId' : UserId__1,\n 'when' : IDL.Int,\n 'likes' : IDL.Int,\n 'comment' : IDL.Text,\n 'replies' : IDL.Int,\n 'videoId' : VideoId__1,\n });\n const DailyPayments = IDL.Record({\n 'count' : IDL.Int,\n 'amount' : IDL.Float64,\n });\n const Report = IDL.Record({\n 'id' : IDL.Text,\n 'userId' : IDL.Text,\n 'when' : IDL.Int,\n 'reviewedBy' : UserId__1,\n 'markedAs' : IDL.Text,\n 'reviewed' : IDL.Int,\n 'videoId' : VideoId__1,\n });\n const Asset__1 = IDL.Record({ 'url' : IDL.Text, 'category' : IDL.Text });\n const Video = IDL.Record({\n 'id' : VideoId__1,\n 'thumb' : IDL.Text,\n 'title' : IDL.Text,\n 'views' : IDL.Int,\n 'userId' : UserId__1,\n 'desc' : IDL.Text,\n 'hash' : IDL.Text,\n 'assets' : IDL.Vec(Asset__1),\n 'tags' : IDL.Vec(IDL.Text),\n 'when' : IDL.Int,\n 'likes' : IDL.Int,\n 'uniqueViews' : IDL.Int,\n 'comments' : IDL.Int,\n });\n const User = IDL.Record({\n 'id' : UserId__1,\n 'userName' : IDL.Text,\n 'displayName' : IDL.Text,\n 'profilePhoto' : IDL.Text,\n });\n const VideoAndUser__1 = IDL.Record({\n 'verified' : IDL.Bool,\n 'video' : Video,\n 'user' : User,\n 'matches' : IDL.Int,\n });\n const ReportAndVideo = IDL.Record({\n 'report' : Report,\n 'video' : VideoAndUser__1,\n });\n const UserAndPermissions = IDL.Record({\n 'permissions' : IDL.Vec(IDL.Text),\n 'user' : User,\n });\n const PaidSubscription = IDL.Record({\n 'id' : IDL.Text,\n 'userId' : UserId__1,\n 'creatorId' : UserId__1,\n 'joined' : IDL.Int,\n 'amount' : IDL.Float64,\n });\n const UserAndPaidSubscription = IDL.Record({\n 'verified' : IDL.Bool,\n 'subscription' : PaidSubscription,\n 'user' : User,\n });\n const VideoAndUser = IDL.Record({\n 'verified' : IDL.Bool,\n 'video' : Video,\n 'user' : User,\n 'matches' : IDL.Int,\n });\n const StateStats = IDL.Record({\n 'likeCount' : IDL.Int,\n 'videoCount' : IDL.Int,\n 'userIdsSize' : IDL.Nat,\n 'userNamesSize' : IDL.Nat,\n 'usersSize' : IDL.Nat,\n 'commentCount' : IDL.Int,\n 'userCount' : IDL.Int,\n });\n const SubscriptionPayment = IDL.Record({\n 'id' : IDL.Text,\n 'when' : IDL.Int,\n 'creatorUserId' : UserId__1,\n 'subscriberUserId' : UserId__1,\n 'amount' : IDL.Float64,\n });\n const User__1 = IDL.Record({\n 'id' : UserId__1,\n 'userName' : IDL.Text,\n 'displayName' : IDL.Text,\n 'profilePhoto' : IDL.Text,\n });\n const TopChannel = IDL.Record({ 'user' : User, 'subscriberCount' : IDL.Int });\n const MonitizationSetting__1 = IDL.Record({\n 'key' : IDL.Text,\n 'value' : IDL.Text,\n });\n const WalletAddress__1 = IDL.Record({\n 'id' : IDL.Text,\n 'address' : IDL.Text,\n });\n const UserMonitizationSetting = IDL.Record({\n 'settings' : IDL.Vec(MonitizationSetting__1),\n 'addresses' : IDL.Vec(WalletAddress__1),\n 'updated' : IDL.Int,\n });\n const Video__1 = IDL.Record({\n 'id' : VideoId__1,\n 'thumb' : IDL.Text,\n 'title' : IDL.Text,\n 'views' : IDL.Int,\n 'userId' : UserId__1,\n 'desc' : IDL.Text,\n 'hash' : IDL.Text,\n 'assets' : IDL.Vec(Asset__1),\n 'tags' : IDL.Vec(IDL.Text),\n 'when' : IDL.Int,\n 'likes' : IDL.Int,\n 'uniqueViews' : IDL.Int,\n 'comments' : IDL.Int,\n });\n const VerifiedAccountStatus = IDL.Record({\n 'method' : IDL.Text,\n 'verified' : IDL.Bool,\n 'userId' : UserId__1,\n 'when' : IDL.Int,\n });\n const UserAndVerifiedAccountStatus = IDL.Record({\n 'status' : VerifiedAccountStatus,\n 'user' : User,\n });\n const Comment = IDL.Record({\n 'id' : CommentId,\n 'userId' : UserId__1,\n 'when' : IDL.Int,\n 'likes' : IDL.Int,\n 'comment' : IDL.Text,\n 'replies' : IDL.Int,\n 'videoId' : VideoId__1,\n });\n const CommentInfo = IDL.Record({ 'user' : User, 'comment' : Comment });\n const VideoStats = IDL.Record({\n 'ctr' : IDL.Float64,\n 'clicks' : IDL.Int,\n 'avgViewDuration' : IDL.Float64,\n 'shares' : IDL.Int,\n 'views' : IDL.Int,\n 'watchTime' : IDL.Float64,\n 'impressions' : IDL.Int,\n 'likes' : IDL.Int,\n 'uniqueViews' : IDL.Int,\n 'watchTimeRate' : IDL.Float64,\n 'comments' : IDL.Int,\n 'totalWatchTimeRate' : IDL.Float64,\n });\n const UserPayment = IDL.Record({\n 'from' : IDL.Text,\n 'when' : IDL.Int,\n 'amount' : IDL.Float64,\n 'videoId' : VideoId__1,\n });\n const UserAndPayment = IDL.Record({\n 'verified' : IDL.Bool,\n 'user' : User,\n 'payment' : UserPayment,\n });\n const UpdateUserResponse = IDL.Record({\n 'status' : IDL.Text,\n 'newUserId' : IDL.Text,\n });\n const WalletAddress = IDL.Record({ 'id' : IDL.Text, 'address' : IDL.Text });\n const MonitizationSetting = IDL.Record({\n 'key' : IDL.Text,\n 'value' : IDL.Text,\n });\n const Asset = IDL.Record({ 'url' : IDL.Text, 'category' : IDL.Text });\n const UploadVideoResponse = IDL.Record({\n 'status' : IDL.Text,\n 'newVideoId' : IDL.Text,\n });\n return IDL.Service({\n 'addComment' : IDL.Func(\n [VideoId, IDL.Text, IDL.Text],\n [AddCommentResponse],\n [],\n ),\n 'addLike' : IDL.Func([VideoId, IDL.Text], [IDL.Text], []),\n 'addPushToken' : IDL.Func([IDL.Text, IDL.Text], [IDL.Text], []),\n 'checkUsernameAvailable' : IDL.Func([IDL.Text], [IDL.Bool], ['query']),\n 'ci' : IDL.Func([], [IDL.Principal], []),\n 'collectCanisterMetrics' : IDL.Func([], [], []),\n 'deleteVideo' : IDL.Func([VideoId], [IDL.Text], []),\n 'getCallerInfo' : IDL.Func([], [IDL.Principal], ['query']),\n 'getCanisterLog' : IDL.Func(\n [IDL.Opt(CanisterLogRequest)],\n [IDL.Opt(CanisterLogResponse)],\n ['query'],\n ),\n 'getCanisterMetrics' : IDL.Func(\n [GetMetricsParameters],\n [IDL.Opt(CanisterMetrics)],\n ['query'],\n ),\n 'getChannelStats' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(UserId, ChannelStats))],\n ['query'],\n ),\n 'getComment' : IDL.Func([CommentId__1], [IDL.Opt(Comment__1)], ['query']),\n 'getDailyChannelStats' : IDL.Func(\n [UserId],\n [IDL.Vec(IDL.Tuple(IDL.Text, ChannelStats))],\n ['query'],\n ),\n 'getDailyPayments' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, DailyPayments))],\n ['query'],\n ),\n 'getDataStats' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Int))],\n ['query'],\n ),\n 'getFlaggedVideos' : IDL.Func([], [IDL.Vec(ReportAndVideo)], []),\n 'getModerators' : IDL.Func([], [IDL.Vec(UserAndPermissions)], ['query']),\n 'getMyPaidSubscriptions' : IDL.Func(\n [],\n [IDL.Vec(UserAndPaidSubscription)],\n [],\n ),\n 'getProgress' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, ChannelStats))],\n ['query'],\n ),\n 'getRecommended' : IDL.Func(\n [IDL.Nat, IDL.Nat],\n [IDL.Opt(IDL.Vec(VideoAndUser))],\n ['query'],\n ),\n 'getRecommendedWithTags' : IDL.Func(\n [IDL.Nat, IDL.Nat, IDL.Vec(IDL.Text), IDL.Bool],\n [IDL.Opt(IDL.Vec(VideoAndUser))],\n ['query'],\n ),\n 'getStateStats' : IDL.Func([], [StateStats], ['query']),\n 'getSubscriberCount' : IDL.Func([UserId], [IDL.Opt(IDL.Int)], ['query']),\n 'getSubscriptionPayments' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, SubscriptionPayment))],\n ['query'],\n ),\n 'getSubscriptionPaymentsItems' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, SubscriptionPayment))],\n ['query'],\n ),\n 'getSubscriptions' : IDL.Func([], [IDL.Opt(IDL.Vec(UserId))], ['query']),\n 'getSubscriptionsUser' : IDL.Func(\n [],\n [IDL.Opt(IDL.Vec(IDL.Opt(User__1)))],\n ['query'],\n ),\n 'getTopChannels' : IDL.Func([], [IDL.Opt(IDL.Vec(TopChannel))], ['query']),\n 'getUser' : IDL.Func([UserId], [IDL.Opt(User__1)], ['query']),\n 'getUserData' : IDL.Func([], [IDL.Opt(User__1)], ['query']),\n 'getUserId' : IDL.Func([], [UserId], ['query']),\n 'getUserIdFromUserName' : IDL.Func(\n [IDL.Text],\n [IDL.Opt(UserId)],\n ['query'],\n ),\n 'getUserLikes' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(UserId, IDL.Vec(VideoId)))],\n ['query'],\n ),\n 'getUserMonitizationSettings' : IDL.Func(\n [],\n [IDL.Opt(UserMonitizationSetting)],\n ['query'],\n ),\n 'getUserMonitizationSettingsById' : IDL.Func(\n [UserId],\n [IDL.Opt(UserMonitizationSetting)],\n ['query'],\n ),\n 'getUserMonitizationSettingsList' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(UserId, UserMonitizationSetting))],\n ['query'],\n ),\n 'getUserPermissions' : IDL.Func(\n [],\n [IDL.Opt(IDL.Vec(IDL.Text))],\n ['query'],\n ),\n 'getUserVideos' : IDL.Func([UserId], [IDL.Vec(Video__1)], ['query']),\n 'getUserViews' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(VideoId)))],\n ['query'],\n ),\n 'getValue' : IDL.Func([], [IDL.Nat], ['query']),\n 'getVerifiedStatus' : IDL.Func([UserId], [IDL.Bool], ['query']),\n 'getVerifiedUsers' : IDL.Func(\n [],\n [IDL.Opt(IDL.Vec(UserAndVerifiedAccountStatus))],\n ['query'],\n ),\n 'getVideo' : IDL.Func([IDL.Text], [IDL.Opt(Video__1)], ['query']),\n 'getVideoComments' : IDL.Func(\n [IDL.Text],\n [IDL.Opt(IDL.Vec(CommentInfo))],\n ['query'],\n ),\n 'getVideoRecommendations' : IDL.Func(\n [VideoId, IDL.Text],\n [IDL.Opt(IDL.Vec(VideoAndUser))],\n ['query'],\n ),\n 'getVideoStats' : IDL.Func([VideoId], [IDL.Opt(VideoStats)], ['query']),\n 'getVideoTips' : IDL.Func([VideoId], [IDL.Vec(UserAndPayment)], ['query']),\n 'getVideosWithTagsAndSort' : IDL.Func(\n [IDL.Nat, IDL.Nat, IDL.Vec(IDL.Text), IDL.Bool, IDL.Text, IDL.Int],\n [IDL.Opt(IDL.Vec(VideoAndUser))],\n ['query'],\n ),\n 'getViewsChunk' : IDL.Func([IDL.Int], [IDL.Vec(IDL.Int)], ['query']),\n 'hasLiked' : IDL.Func([VideoId], [IDL.Bool], ['query']),\n 'increment' : IDL.Func([], [IDL.Nat], []),\n 'incrementClicks' : IDL.Func([VideoId, IDL.Bool, IDL.Text], [IDL.Text], []),\n 'incrementImpressions' : IDL.Func(\n [VideoId, IDL.Bool, IDL.Text],\n [IDL.Text],\n [],\n ),\n 'incrementShares' : IDL.Func([VideoId, IDL.Bool, IDL.Text], [IDL.Text], []),\n 'incrementTest' : IDL.Func([], [IDL.Bool], []),\n 'incrementView' : IDL.Func(\n [VideoId, IDL.Text, IDL.Bool, IDL.Text],\n [IDL.Text],\n [],\n ),\n 'incrementWatchTime' : IDL.Func(\n [VideoId, IDL.Bool, IDL.Text, IDL.Float64, IDL.Float64],\n [IDL.Text],\n [],\n ),\n 'isPaidSubscriber' : IDL.Func([UserId], [IDL.Bool], ['query']),\n 'isSubscribed' : IDL.Func([UserId], [IDL.Bool], ['query']),\n 'joinPaidSubscription' : IDL.Func([UserId, IDL.Float64], [IDL.Text], []),\n 'optimiseData' : IDL.Func([], [IDL.Int, IDL.Int], []),\n 'recordPayment' : IDL.Func(\n [VideoId, IDL.Text, UserId, IDL.Float64],\n [IDL.Text],\n [],\n ),\n 'reportVideo' : IDL.Func([VideoId, IDL.Text], [IDL.Text], []),\n 'search' : IDL.Func(\n [IDL.Text, IDL.Nat, IDL.Nat],\n [IDL.Opt(IDL.Vec(VideoAndUser))],\n ['query'],\n ),\n 'setDailyViews' : IDL.Func([IDL.Text, IDL.Int], [IDL.Bool], []),\n 'setUserPermissions' : IDL.Func(\n [IDL.Text, IDL.Vec(IDL.Text)],\n [IDL.Bool],\n [],\n ),\n 'setVerifiedStatus' : IDL.Func([IDL.Text], [IDL.Text], []),\n 'setVerifiedStatusManual' : IDL.Func([UserId, IDL.Text], [IDL.Text], []),\n 'subscribe' : IDL.Func([UserId, IDL.Text], [IDL.Text], []),\n 'unsubscribe' : IDL.Func([UserId, IDL.Text], [IDL.Text], []),\n 'updateReport' : IDL.Func([IDL.Text, IDL.Text], [IDL.Bool], []),\n 'updateTags' : IDL.Func([VideoId, IDL.Vec(IDL.Text)], [IDL.Text], []),\n 'updateUser' : IDL.Func(\n [IDL.Text, IDL.Text, IDL.Text],\n [UpdateUserResponse],\n [],\n ),\n 'updateUserMonitizationSettings' : IDL.Func(\n [IDL.Vec(WalletAddress), IDL.Vec(MonitizationSetting)],\n [IDL.Text],\n [],\n ),\n 'updateVideo' : IDL.Func([VideoId, IDL.Text, IDL.Text], [IDL.Text], []),\n 'updateVideoAssets' : IDL.Func(\n [VideoId, IDL.Text, IDL.Text, IDL.Vec(Asset)],\n [IDL.Text],\n [],\n ),\n 'uploadVideo' : IDL.Func(\n [IDL.Text, IDL.Text, IDL.Text, IDL.Text, IDL.Vec(Asset)],\n [UploadVideoResponse],\n [],\n ),\n 'whoami' : IDL.Func([], [IDL.Principal], []),\n });\n};\nexport const init = ({ IDL }) => { return []; };","export const idlFactory = ({ IDL }) => {\n const GetLogMessagesFilter = IDL.Record({\n 'analyzeCount' : IDL.Nat32,\n 'messageRegex' : IDL.Opt(IDL.Text),\n 'messageContains' : IDL.Opt(IDL.Text),\n });\n const Nanos = IDL.Nat64;\n const GetLogMessagesParameters = IDL.Record({\n 'count' : IDL.Nat32,\n 'filter' : IDL.Opt(GetLogMessagesFilter),\n 'fromTimeNanos' : IDL.Opt(Nanos),\n });\n const GetLatestLogMessagesParameters = IDL.Record({\n 'upToTimeNanos' : IDL.Opt(Nanos),\n 'count' : IDL.Nat32,\n 'filter' : IDL.Opt(GetLogMessagesFilter),\n });\n const CanisterLogRequest = IDL.Variant({\n 'getMessagesInfo' : IDL.Null,\n 'getMessages' : GetLogMessagesParameters,\n 'getLatestMessages' : GetLatestLogMessagesParameters,\n });\n const CanisterLogFeature = IDL.Variant({\n 'filterMessageByContains' : IDL.Null,\n 'filterMessageByRegex' : IDL.Null,\n });\n const CanisterLogMessagesInfo = IDL.Record({\n 'features' : IDL.Vec(IDL.Opt(CanisterLogFeature)),\n 'lastTimeNanos' : IDL.Opt(Nanos),\n 'count' : IDL.Nat32,\n 'firstTimeNanos' : IDL.Opt(Nanos),\n });\n const LogMessagesData = IDL.Record({\n 'timeNanos' : Nanos,\n 'message' : IDL.Text,\n });\n const CanisterLogMessages = IDL.Record({\n 'data' : IDL.Vec(LogMessagesData),\n 'lastAnalyzedMessageTimeNanos' : IDL.Opt(Nanos),\n });\n const CanisterLogResponse = IDL.Variant({\n 'messagesInfo' : CanisterLogMessagesInfo,\n 'messages' : CanisterLogMessages,\n });\n const MetricsGranularity = IDL.Variant({\n 'hourly' : IDL.Null,\n 'daily' : IDL.Null,\n });\n const GetMetricsParameters = IDL.Record({\n 'dateToMillis' : IDL.Nat,\n 'granularity' : MetricsGranularity,\n 'dateFromMillis' : IDL.Nat,\n });\n const UpdateCallsAggregatedData = IDL.Vec(IDL.Nat64);\n const CanisterHeapMemoryAggregatedData = IDL.Vec(IDL.Nat64);\n const CanisterCyclesAggregatedData = IDL.Vec(IDL.Nat64);\n const CanisterMemoryAggregatedData = IDL.Vec(IDL.Nat64);\n const HourlyMetricsData = IDL.Record({\n 'updateCalls' : UpdateCallsAggregatedData,\n 'canisterHeapMemorySize' : CanisterHeapMemoryAggregatedData,\n 'canisterCycles' : CanisterCyclesAggregatedData,\n 'canisterMemorySize' : CanisterMemoryAggregatedData,\n 'timeMillis' : IDL.Int,\n });\n const NumericEntity = IDL.Record({\n 'avg' : IDL.Nat64,\n 'max' : IDL.Nat64,\n 'min' : IDL.Nat64,\n 'first' : IDL.Nat64,\n 'last' : IDL.Nat64,\n });\n const DailyMetricsData = IDL.Record({\n 'updateCalls' : IDL.Nat64,\n 'canisterHeapMemorySize' : NumericEntity,\n 'canisterCycles' : NumericEntity,\n 'canisterMemorySize' : NumericEntity,\n 'timeMillis' : IDL.Int,\n });\n const CanisterMetricsData = IDL.Variant({\n 'hourly' : IDL.Vec(HourlyMetricsData),\n 'daily' : IDL.Vec(DailyMetricsData),\n });\n const CanisterMetrics = IDL.Record({ 'data' : CanisterMetricsData });\n const Feedback__1 = IDL.Record({\n 'name' : IDL.Text,\n 'when' : IDL.Int,\n 'feedback' : IDL.Text,\n 'category' : IDL.Text,\n });\n const Feedback = IDL.Service({\n 'addFeedback' : IDL.Func([IDL.Text, IDL.Text, IDL.Text], [IDL.Int], []),\n 'collectCanisterMetrics' : IDL.Func([], [], []),\n 'getCanisterLog' : IDL.Func(\n [IDL.Opt(CanisterLogRequest)],\n [IDL.Opt(CanisterLogResponse)],\n ['query'],\n ),\n 'getCanisterMetrics' : IDL.Func(\n [GetMetricsParameters],\n [IDL.Opt(CanisterMetrics)],\n ['query'],\n ),\n 'getFeedbackList' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, Feedback__1))],\n ['query'],\n ),\n });\n return Feedback;\n};\nexport const init = ({ IDL }) => { return []; };\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\n\n// Imports and re-exports candid interface\nimport { idlFactory } from './dsocial.did.js';\nexport { idlFactory } from './dsocial.did.js';\n// CANISTER_ID is replaced by webpack based on node environment\nexport const canisterId = process.env.DSOCIAL_CANISTER_ID;\n\n/**\n * \n * @param {string | import(\"@dfinity/principal\").Principal} canisterId Canister ID of Agent\n * @param {{agentOptions?: import(\"@dfinity/agent\").HttpAgentOptions; actorOptions?: import(\"@dfinity/agent\").ActorConfig}} [options]\n * @return {import(\"@dfinity/agent\").ActorSubclass}\n */\n export const createActor = (canisterId, options) => {\n const agent = new HttpAgent({ ...options?.agentOptions });\n \n // Fetch root key for certificate validation during development\n if(process.env.NODE_ENV !== \"production\") {\n agent.fetchRootKey().catch(err=>{\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n // Creates an actor with using the candid interface and the HttpAgent\n return Actor.createActor(idlFactory, {\n agent,\n canisterId,\n ...options?.actorOptions,\n });\n};\n \n/**\n * A ready-to-use agent for the dsocial canister\n * @type {import(\"@dfinity/agent\").ActorSubclass}\n */\n export const dsocial = createActor(canisterId);\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\n\n// Imports and re-exports candid interface\nimport { idlFactory } from './feedback.did.js';\nexport { idlFactory } from './feedback.did.js';\n// CANISTER_ID is replaced by webpack based on node environment\nexport const canisterId = process.env.FEEDBACK_CANISTER_ID;\n\n/**\n * \n * @param {string | import(\"@dfinity/principal\").Principal} canisterId Canister ID of Agent\n * @param {{agentOptions?: import(\"@dfinity/agent\").HttpAgentOptions; actorOptions?: import(\"@dfinity/agent\").ActorConfig}} [options]\n * @return {import(\"@dfinity/agent\").ActorSubclass}\n */\n export const createActor = (canisterId, options) => {\n const agent = new HttpAgent({ ...options?.agentOptions });\n \n // Fetch root key for certificate validation during development\n if(process.env.NODE_ENV !== \"production\") {\n agent.fetchRootKey().catch(err=>{\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n // Creates an actor with using the candid interface and the HttpAgent\n return Actor.createActor(idlFactory, {\n agent,\n canisterId,\n ...options?.actorOptions,\n });\n};\n \n/**\n * A ready-to-use agent for the feedback canister\n * @type {import(\"@dfinity/agent\").ActorSubclass}\n */\n export const feedback = createActor(canisterId);\n","import {\n Actor,\n HttpAgent,\n ActorSubclass,\n HttpAgentOptions,\n} from '@dfinity/agent'\nimport { AuthClient } from '@dfinity/auth-client'\n\nimport { idlFactory, canisterId } from '../types/backend/dsocial'\nimport { DSocial } from '../types/backend/dsocial/dsocial.did'\nimport { Feedback } from '../types/backend/feedback/feedback.did'\nimport { idlFactory as FeedbackIdlFactory } from '../types/backend/feedback'\n\nimport {\n BACKEND_CANISTER_ID,\n FEEDBACK_BACKEND_CANISTER_ID,\n IC_HOST,\n} from '../config'\n\nlet agentOptions: HttpAgentOptions = { host: IC_HOST }\n\nexport async function getBackendActor(\n authClient: AuthClient | null,\n): Promise> {\n if (authClient instanceof AuthClient) {\n const identity = authClient.getIdentity()\n agentOptions = { ...agentOptions, identity: identity as any }\n }\n const agent = new HttpAgent(agentOptions)\n // for local development only, this must not be used for production\n if (process.env.NODE_ENV === 'development') {\n await agent.fetchRootKey()\n }\n\n // console.log('BACKEND_CANISTER_ID', BACKEND_CANISTER_ID)\n\n const backend = Actor.createActor(idlFactory, {\n agent,\n canisterId: BACKEND_CANISTER_ID!,\n })\n\n return backend\n}\n\nexport async function getFeedbackBackendActor(\n authClient: AuthClient | null,\n): Promise> {\n if (authClient instanceof AuthClient) {\n const identity = authClient.getIdentity()\n agentOptions = { ...agentOptions, identity: identity as any }\n }\n const agent = new HttpAgent(agentOptions)\n // for local development only, this must not be used for production\n if (process.env.NODE_ENV === 'development') {\n await agent.fetchRootKey()\n }\n\n const backend = Actor.createActor(FeedbackIdlFactory, {\n agent,\n canisterId: FEEDBACK_BACKEND_CANISTER_ID!,\n })\n\n return backend\n}\n","import { ActorSubclass } from '@dfinity/agent'\nimport { AuthClient } from '@dfinity/auth-client'\nimport { Usergeek } from 'usergeek-ic-js'\n\nimport { getBackendActor, getFeedbackBackendActor } from './agent'\nimport { IDENTITY_PROVIDER_URL } from '../config'\nimport { DSocial, User } from '../types/backend/dsocial/dsocial.did'\nimport { UserPermission } from '../types'\n\nlet loadAuthClientPromise: Promise | null = null\nlet authClient: AuthClient | null | undefined = null\n\nlet loadBackendActorPromise: Promise> | null = null\nlet backend: ActorSubclass | null = null\n\nexport const loadAuthClient = () => {\n if (!loadAuthClientPromise) {\n loadAuthClientPromise = new Promise(async (resolve) => {\n authClient = await AuthClient.create()\n resolve()\n })\n }\n\n return loadAuthClientPromise\n}\n\nexport const getAuthClient = () => authClient\n\nexport const loadBackendActor = () => {\n if (!loadBackendActorPromise) {\n loadBackendActorPromise = new Promise(async (resolve) => {\n // window.alert('load auth')\n await loadAuthClient()\n // window.alert('load backend')\n backend = await getBackendActor(authClient!)\n // window.alert('loaded')\n resolve(backend)\n })\n }\n\n return loadBackendActorPromise\n}\n\nloadAuthClient()\nloadBackendActor()\n\nexport const isAuthenticated = async () => {\n await loadAuthClient()\n const isLoggedIn = await authClient?.isAuthenticated()\n const userData = await getUserData()\n let userPermissions: UserPermission[] = []\n let principal = null\n\n if (isLoggedIn) {\n principal = authClient?.getIdentity().getPrincipal()\n // console.log(principal?.toString(), 'principal')\n\n if (principal && !principal.isAnonymous()) {\n const backend = await getBackend()\n const userPermissionsResult = await backend.getUserPermissions()\n // console.log('userPermissionsResult', userPermissionsResult)\n if (\n userPermissionsResult &&\n userPermissionsResult.length > 0 &&\n userPermissionsResult[0]\n ) {\n const [rawUserPermissions] = userPermissionsResult\n userPermissions = rawUserPermissions.map(\n (perm) => perm as UserPermission,\n )\n // console.log('userPermissions', userPermissions)\n }\n Usergeek.setPrincipal(principal)\n Usergeek.trackSession()\n }\n } else {\n // @ts-ignore\n Usergeek.setPrincipal(null)\n }\n\n return { isLoggedIn, userData, userPermissions, principal }\n}\n\ntype Callback = (isLoggedIn: boolean, userData?: User | null) => void\nconst callbacks: Callback[] = []\n\nexport const addAuthChangedListener = (callback: Callback) => {\n if (callbacks.indexOf(callback) === -1) {\n callbacks.push(callback)\n }\n}\n\nexport const removeAuthChangedListener = (callback: Callback) => {\n const index = callbacks.indexOf(callback)\n if (index !== -1) {\n callbacks.splice(index, 1)\n }\n}\n\nexport const updateAuthChangedListeners = (\n isLoggedIn: boolean,\n userData?: User | null,\n) => {\n callbacks.forEach((callback) => {\n try {\n callback(isLoggedIn, userData)\n } catch (e) {\n // do nothing\n }\n })\n}\n\nlet clientId: string | null | undefined = ''\nconst CLIENT_ID_KEY = 'dsocial:client:id'\n\nexport const getClientId = () => {\n if (!clientId) {\n clientId = window.localStorage.getItem(CLIENT_ID_KEY)\n\n if (!clientId) {\n clientId = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n (c) => {\n var r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n },\n )\n window.localStorage.setItem(CLIENT_ID_KEY, clientId)\n }\n }\n\n return clientId\n}\n\nexport const login = async (onSuccess: () => void) => {\n await loadAuthClient()\n const daysToAdd = 31\n const expiry = Date.now() + daysToAdd * 86400000\n await authClient?.login({\n onSuccess: async () => {\n window.location.href = '/'\n },\n identityProvider: IDENTITY_PROVIDER_URL,\n maxTimeToLive: BigInt(expiry * 1000000),\n })\n}\n\nexport const getBackend = async () => await loadBackendActor()\nexport const getFeedbackBackend = async () => {\n await loadAuthClient()\n return await getFeedbackBackendActor(authClient!)\n}\n\nexport const getUserData = async () => {\n const backend = await getBackend()\n const userResults = await backend.getUserData()\n return userResults && userResults.length > 0 ? userResults[0] : null\n}\n\nexport const logout = async () => {\n await loadAuthClient()\n await authClient?.logout({ returnTo: '/' })\n}\n","import { TFunction } from 'react-i18next'\n\nconst renderNumbers = (\n num: BigInt | bigint | number | undefined,\n translationIdPrefix: string,\n t: TFunction<'translation', undefined>,\n) => {\n const newNum = Number(num || 0)\n\n if (newNum < 1) return t(`${translationIdPrefix}None`)\n\n if (newNum >= 1000000)\n return t(`${translationIdPrefix}M`, {\n number: Number(newNum / 1000000).toFixed(1),\n })\n\n if (newNum >= 1000) {\n return t(`${translationIdPrefix}K`, {\n number:\n newNum / 1000 === 0\n ? Math.round(newNum / 1000)\n : (newNum / 1000).toFixed(1),\n })\n }\n\n return t(`${translationIdPrefix}`, { number: newNum })\n}\n\nexport default renderNumbers\n","import TimeAgo from 'javascript-time-ago'\n\nimport en from 'javascript-time-ago/locale/en.json'\nimport de from 'javascript-time-ago/locale/de.json'\nimport zh from 'javascript-time-ago/locale/zh.json'\nimport ja from 'javascript-time-ago/locale/ja.json'\nimport ru from 'javascript-time-ago/locale/ru.json'\nimport vi from 'javascript-time-ago/locale/vi.json'\nimport hi from 'javascript-time-ago/locale/hi.json'\n\nTimeAgo.addDefaultLocale(en)\nTimeAgo.addLocale(de)\nTimeAgo.addLocale(zh)\nTimeAgo.addLocale(ja)\nTimeAgo.addLocale(ru)\nTimeAgo.addLocale(vi)\nTimeAgo.addLocale(hi)\n\nlet timeAgo = new TimeAgo(navigator.language)\n\nconst ago = (when?: bigint) => {\n const newWhen = when ? Number(when) / 1000000 : 0\n\n if (newWhen) return timeAgo.format(newWhen)\n\n return ''\n}\n\nexport const setTimeAgoLocale = (code: string) => {\n timeAgo = new TimeAgo(code)\n}\n\nexport default ago\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"Button_button__2Lf63\",\"inline\":\"Button_inline__1E3Kv\",\"small\":\"Button_small__1WqE1\",\"secondary\":\"Button_secondary__1gv5E\",\"cancel\":\"Button_cancel__3_nuj\",\"loading\":\"Button_loading__2nORI\",\"icon\":\"Button_icon__36xd-\",\"subtle\":\"Button_subtle__1xH3A\",\"invert\":\"Button_invert__2KaMp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"Pay_modal__1fJyH\",\"overlay\":\"Pay_overlay__2Dk_5\",\"icp\":\"Pay_icp__2t847\",\"modalContent\":\"Pay_modalContent__1ZseS\",\"option\":\"Pay_option__2g4wl\",\"desc\":\"Pay_desc__sO6Dx\",\"picker\":\"Pay_picker__3fgF8\",\"container\":\"Pay_container__VXnX5\",\"iconButton\":\"Pay_iconButton__2jevJ\",\"verified\":\"Pay_verified__3NQng\"};","import { ReactNode, useCallback, useState } from 'react'\nimport classname from 'classnames'\n\nimport { useTranslation, useUser } from '../../hooks'\n\nimport styles from './Feedback.module.scss'\nimport { getFeedbackBackend } from '../../lib/icp'\n\ninterface ItemProps {\n label: string\n children: ReactNode\n htmlFor?: string\n}\n\nconst Item = ({ label, children, htmlFor }: ItemProps) => (\n
\n \n {children}\n
\n)\n\nconst types = ['general', 'bug', 'idea']\n\nconst Feedback = () => {\n const embedMode = window.location.pathname.toLowerCase().startsWith('/embed')\n const { userData } = useUser()\n const { t } = useTranslation()\n const [open, setOpen] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const [currentType, setType] = useState(types[0])\n const [name, setName] = useState(userData?.userName || '')\n const [feedback, setFeedback] = useState('')\n\n const toggleOpen = useCallback(() => {\n setOpen(!open)\n }, [open])\n\n const submit = useCallback(async () => {\n setSubmitted(true)\n setTimeout(() => setOpen(false), 2500)\n const backend = await getFeedbackBackend()\n const result = await backend.addFeedback(currentType, name, feedback)\n }, [currentType, name, feedback])\n\n if (embedMode) return null\n\n return (\n
\n
\n {!submitted ? (\n <>\n \n
\n {types.map((type, i) => (\n setType(type)}\n >\n {t(`feedbackFeedbackType_${type}`)}\n
\n ))}\n
\n \n \n setName(e.target.value)}\n id=\"name\"\n />\n \n \n setFeedback(e.target.value)}\n id=\"feedback\"\n placeholder={t('feedbackPlaceholder')}\n />\n \n \n \n ) : (\n
\n

{t('feedbackSubmitted')}

\n
\n )}\n \n \n \n )\n}\n\nexport default Feedback\n","import { useEffect } from 'react'\nimport { BrowserRouter as Router, Switch, Route } from 'react-router-dom'\nimport * as Sentry from '@sentry/react'\nimport { Integrations } from '@sentry/tracing'\nimport { QueryParamProvider } from 'use-query-params'\nimport { ENV } from './config'\nimport './assets/scss/font.scss'\n\nimport { Usergeek } from 'usergeek-ic-js'\n\nif (window.location.host !== 'localhost:3000') {\n Sentry.init({\n dsn: 'https://8ea9edee387244b68da5226861119821@o1073695.ingest.sentry.io/6073445',\n integrations: [new Integrations.BrowserTracing()],\n\n // Set tracesSampleRate to 1.0 to capture 100%\n // of transactions for performance monitoring.\n // We recommend adjusting this value in production\n tracesSampleRate: 1.0,\n })\n}\n\nimport './translations/i18n'\n\nimport { ThemeProvider, UserProvider } from './components'\nimport pagesObject from './pages'\n\nimport './styles/global.scss'\nimport Feedback from './components/Feedback'\n\nUsergeek.init({\n apiKey: '011E0138D24FC7C414E62D0B78F3EEAE',\n})\n\nconst pages = Object.entries(pagesObject)\n\nconst App = () => {\n const embedMode = window.location.pathname.toLowerCase().startsWith('/embed')\n const wrongUrl =\n !embedMode && window.location.host.indexOf('raw.ic0.app') !== -1\n\n useEffect(() => {\n if (wrongUrl) {\n window.location.href = window.location.href.replace(\n 'raw.ic0.app',\n 'ic0.app',\n )\n }\n }, [wrongUrl])\n\n return (\n \n \n <>\n \n \n \n {pages.map(([key, { path, component }]) => (\n \n ))}\n \n \n \n \n \n \n \n )\n}\n\nexport default App\n","import './shim'\n\nimport { StrictMode } from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './App'\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n)\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Feedback_container__32CHx\",\"open\":\"Feedback_open__27dGT\",\"item\":\"Feedback_item__ewWnK\",\"types\":\"Feedback_types__1RVS7\",\"feedbackType\":\"Feedback_feedbackType__2Z3kU\",\"first\":\"Feedback_first__3OjlH\",\"last\":\"Feedback_last__duEjp\",\"selected\":\"Feedback_selected__1pXa1\",\"submitted\":\"Feedback_submitted__3FbM3\"};","import { useContext } from 'react'\n\nimport { UserContext } from '../components/UserProvider'\n\nexport const useUser = () => useContext(UserContext)\n","// import { useUser } from './useUser'\n\nexport enum LoginResponse {\n GetCoinbaseFailed,\n SigningFailed,\n UserDoesNotExist,\n NonceFailed,\n AuthenticateFailed,\n Success,\n}\n\nexport const useLogin = () => {\n // const { contract } = useBlockchain()\n // const { setLoggedIn } = useUser()\n\n const login = async (): Promise => {\n // const success = await contract.login()\n\n // if (success) {\n // const userId = await contract.getUserId()\n\n // if (userId > 0) {\n // const coinbase = await eth.getCoinbase()\n // if (!coinbase) {\n // return LoginResponse.GetCoinbaseFailed\n // }\n\n // const publicAddress = coinbase.toLowerCase()\n // const { nonce, error: nonceError } = await postNonce(\n // userId,\n // publicAddress,\n // )\n // let signature: string = ''\n\n // if (nonceError) {\n // return LoginResponse.NonceFailed\n // }\n\n // try {\n // signature = await eth.personal.sign(\n // createTextSignature(nonce),\n // publicAddress,\n // '', // MetaMask will ignore the password argument here\n // )\n // } catch (err) {\n // return LoginResponse.SigningFailed\n // }\n\n // const { accessToken, error: authError } = await postAuthenticate(\n // userId,\n // publicAddress,\n // signature,\n // )\n\n // if (authError) {\n // return LoginResponse.AuthenticateFailed\n // }\n\n // window.localStorage.setItem(STORAGE_KEYS.ACCESS_TOKEN, accessToken)\n\n // setLoggedIn(true)\n\n // return LoginResponse.Success\n // }\n // }\n\n if (true) {\n // do ntohing\n //\n const a = 1\n const b = a - 1\n console.log(b)\n }\n\n return LoginResponse.UserDoesNotExist\n }\n\n return {\n login,\n }\n}\n","import { MouseEventHandler, ReactNode } from 'react'\n\nimport ClipLoader from 'react-spinners/ClipLoader'\nimport { Link } from 'react-router-dom'\n\nimport styles from './Button.module.scss'\n\nconst Button = ({\n children,\n href,\n backgroundColor,\n type,\n loading,\n onClick,\n disabled,\n icon,\n secondary,\n cancel,\n small,\n inline,\n subtle,\n className,\n invert\n}: ButtonProps) => {\n let cn = `${styles.button} ${className || ''} ${\n secondary ? styles.secondary : ''\n } ${cancel ? styles.cancel : ''}`\n\n if (small) cn += ` ${styles.small}`\n if (inline) cn += ` ${styles.inline}`\n if (subtle) cn += ` ${styles.subtle}`\n if (invert) cn += ` ${styles.invert}`\n\n if (href) {\n if (href.startsWith('http')) {\n return (\n \n {children}\n \n )\n }\n\n return (\n \n {icon && {icon}}\n {children}\n \n )\n }\n\n return (\n \n {icon && {icon}}\n {children}\n\n {loading && (\n
\n \n
\n )}\n \n )\n}\n\ninterface ButtonProps {\n children: ReactNode\n href?: string\n backgroundColor?: string | null\n type?: 'submit' | 'button' | 'reset'\n loading?: boolean\n disabled?: boolean\n onClick?: MouseEventHandler | undefined\n icon?: ReactNode\n secondary?: boolean\n cancel?: boolean\n small?: boolean\n inline?: boolean\n subtle?: boolean\n className?: string\n invert?: boolean\n}\n\nexport default Button\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"side_wrap\":\"SideMenu_side_wrap__1cZeA\",\"following_wrap\":\"SideMenu_following_wrap__3XOcQ\",\"following_title\":\"SideMenu_following_title__1Av06\",\"following_ul\":\"SideMenu_following_ul__32GC_\",\"following_username\":\"SideMenu_following_username__33lqm\",\"fol_bottom\":\"SideMenu_fol_bottom__2g5ik\",\"fol_arrow\":\"SideMenu_fol_arrow__1wH6h\",\"side_wrap_phone\":\"SideMenu_side_wrap_phone___JdXg\"};","const isLocal = false //window.location.host === 'localhost:3000'\nconst pick = (localValue: T, prodValue: T) =>\n isLocal ? localValue : prodValue\n\nconst ENV = isLocal ? 'LOCAL' : 'PROD'\n\nconst IDENTITY_PROVIDER_URL = pick(\n `http://localhost:8000?canisterId=rwlgt-iiaaa-aaaaa-aaaaa-cai`,\n 'https://identity.ic0.app/',\n)\n\n// pick(\n// `http://localhost:8000?canisterId=rwlgt-iiaaa-aaaaa-aaaaa-cai`,\n// 'https://identity.ic0.app/',\n// )\n\n// const BACKEND_CANISTER_ID = pick(\n// 'rwlgt-iiaaa-aaaaa-aaaaa-cai',\n// // '7pg3f-yyaaa-aaaah-adjna-cai.icp0.io',\n// 'mw5fv-3qaaa-aaaaj-aacba-cai',\n// )\nconst BACKEND_CANISTER_ID = 'mw5fv-3qaaa-aaaaj-aacba-cai'\n\nconst FEEDBACK_BACKEND_CANISTER_ID = pick('', 'catlt-2yaaa-aaaan-qagja-cai')\n\nconst IPFS_BASE_URL =\n /*pick(\n 'http://localhost:8080/ipfs/',*/\n 'https://infura-ipfs.io/ipfs/'\n// ,\n// )\n\nconst ASSET_BASE_URL = IPFS_BASE_URL\n\nconst USE_WALLET = true // pick(false, true)\n\nconst AR_WEAVE_CONFIG = {\n host: 'arweave.net',\n port: 443,\n protocol: 'https',\n logging: true,\n logger: console.log,\n}\n\n// /*pick(\n// {\n// host: '127.0.0.1',\n// port: 1984,\n// protocol: 'http',\n// logging: true,\n// logger: console.log,\n// },*/\n// // {\n// // host: 'arweave.net',\n// // port: 443,\n// // protocol: 'https',\n// // logging: true,\n// // logger: console.log,\n// // }\n// // )\n\nconst AR_WEAVE_HOST = 'https://arweave.net/'\n\n// 'https://arweave.net/'\n\nconst IPFS_CONFIG =\n //pick(\n // { url: 'http://127.0.0.1:5001' },\n {\n host: 'infura-ipfs.io',\n port: 5001,\n protocol: 'https',\n headers: {\n authorization:\n 'Basic ' +\n new Buffer(\n '1ukY0n80PYUAX41plglHkht8Uce:a005aeb764555716f4f0ba6c0e0d6ca6',\n ).toString('base64'),\n },\n }\n// ,\n// )\n\nconst AR_ENABLED = false\n\n// try {\n// const val = window.localStorage.getItem('ar_test')\n// if (val === 'yes') {\n// console.log('ar_test: from storage yes')\n// AR_ENABLED = true\n// } else if (val === 'no') {\n// console.log('ar_test: from storage no')\n// } else {\n// console.log('ar_test: not in storage')\n// AR_ENABLED = Math.random() < 0.5\n// const newValue = AR_ENABLED ? 'yes' : 'no'\n// window.localStorage.setItem('ar_test', newValue)\n// }\n// console.log('ar_test: running', AR_ENABLED)\n// } catch (e) {\n// console.warn('ar_test: failed', e)\n// }\n\nconst CLOUD_UPLOAD = true\n\nconst CS_CDN = {\n before:\n 'https://firebasestorage.googleapis.com/v0/b/ilecstdybtaosa.appspot.com/o/',\n after: 'https://dsocial.b-cdn.net/',\n}\n\nconst CLOUD_TRANSCODING = true\n\nconst AR_CDN = {\n before: 'https://arweave.net/',\n after: 'https://arweave.net/',\n // after: 'https://dsocial-arweave.b-cdn.net/',\n}\n\nconst BADGE_CHECKOUT_ID = pick(\n 'fb27e30e-042e-450e-a466-c2f9c87a8c6b',\n 'e8976620-56d0-460c-a8ab-c497200b8fae',\n)\n\nconst VERIFIED_PRICE_ID = pick(\n 'price_1K2XgyCx8st68diAJznLG1ly',\n 'price_1K2qWZCx8st68diAPYzcR7cz',\n)\n\nconst FUNCTIONS_URL = pick(\n 'http://localhost:5001/ilecstdybtaosa/us-central1',\n 'https://us-central1-ilecstdybtaosa.cloudfunctions.net',\n)\n\nconst IC_HOST = pick('http://localhost:8000/', 'https://boundary.ic0.app/')\n\nconst IS_LOCAL = isLocal\n\nexport {\n FUNCTIONS_URL,\n VERIFIED_PRICE_ID,\n BADGE_CHECKOUT_ID,\n ENV,\n IDENTITY_PROVIDER_URL,\n BACKEND_CANISTER_ID,\n FEEDBACK_BACKEND_CANISTER_ID,\n ASSET_BASE_URL,\n USE_WALLET,\n AR_WEAVE_CONFIG,\n IPFS_CONFIG,\n IPFS_BASE_URL,\n AR_WEAVE_HOST,\n AR_ENABLED,\n CLOUD_UPLOAD,\n CS_CDN,\n CLOUD_TRANSCODING,\n AR_CDN,\n IC_HOST,\n IS_LOCAL,\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"login_wrap\":\"Login_login_wrap__bYopf\",\"login_wrap_head\":\"Login_login_wrap_head__L4y43\",\"login_wrap_head_title\":\"Login_login_wrap_head_title__1ANuK\",\"login_wrap_head_box\":\"Login_login_wrap_head_box__bKfV0\",\"login_wrap_first_title\":\"Login_login_wrap_first_title__3y5Pt\",\"login_wrap_first_button\":\"Login_login_wrap_first_button__-kTGC\"};","import { ASSET_BASE_URL, AR_WEAVE_HOST, CS_CDN, AR_CDN } from '../config'\nimport { Video } from '../types/backend/dsocial/dsocial.did'\n\nconst generateThumbnailUrl = (video: Video) => {\n if (video.thumb && video.thumb.startsWith('http')) {\n return video.thumb.replace(CS_CDN.before, CS_CDN.after)\n }\n\n // if (video.assets.length > 2) {\n // const thumb = video.assets.find(r => r.category === 'ict')\n // if (thumb) {\n // return thumb.url.replace('5xecn-dyaaa-aaaal-qbdcq-cai.raw.ic0.app', 'dsocialic.b-cdn.net')\n // }\n // }\n\n if (video.hash === 'ar') {\n return `${AR_WEAVE_HOST.replace(AR_CDN.before, AR_CDN.after)}${video.thumb}`\n }\n\n return `${ASSET_BASE_URL}${video.thumb}`\n}\n\nexport default generateThumbnailUrl\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"Channel_header__2Gg9e\",\"profilePhoto\":\"Channel_profilePhoto__2ClFE\",\"right\":\"Channel_right__22AlS\",\"channelInfo\":\"Channel_channelInfo__eq_Cq\",\"videos\":\"Channel_videos__VuzmV\",\"verified\":\"Channel_verified__2OMg4\"};","// built to keep data bandwidth costs as low as possible\n// caches images locally in local storage using data URLs\n\nimport { ImgHTMLAttributes, useEffect, useState } from 'react'\nimport sha1 from 'sha1'\n\nimport styles from './CachedImage.module.scss'\n\nimport { useUser, useTranslation } from '../../hooks'\n\nimport pages from '../../pages'\n\nimport { getUserData } from '../../lib/icp'\n\nimport { useHistory, Link } from 'react-router-dom'\n\nconst preloadingState: { [key: string]: boolean } = {}\n\nconst preloadImage = (cacheKey: string, src: string) => {\n if (!preloadingState[cacheKey]) {\n preloadingState[cacheKey] = true\n\n const image = new Image()\n let start = 0\n image.setAttribute('crossOrigin', 'anonymous')\n image.onload = () => {\n const canvas = document.createElement('canvas')\n canvas.width = image.width\n canvas.height = image.height\n const ctx = canvas.getContext('2d')\n\n if (!ctx) {\n return\n }\n\n ctx.drawImage(image, 0, 0, image.width, image.height)\n const dataUrl = canvas.toDataURL('image/jpeg')\n try {\n window.localStorage.setItem(cacheKey, dataUrl)\n // console.log(`download & cache of ${src} took ${Date.now() - start}ms...`)\n } catch (e) {\n // console.log('Sometimes storing image fails')\n }\n }\n // console.log(`starting download of ${src}`)\n start = Date.now()\n image.src = src\n }\n}\n\ninterface IList {\n icon: string\n name: string\n id: string\n url: string\n}\n\ninterface IUser {\n userName?: string\n id?: string\n profilePhoto?: string\n [propName: string]: string | any\n}\n\nconst CachedImage = ({ src, ...rest }: ImgHTMLAttributes) => {\n const [cachedSrc, setCachedSrc] = useState('')\n\n const [user, setUser] = useState(null)\n\n const { userData, principal } = useUser()\n\n const { t } = useTranslation()\n\n const history = useHistory()\n\n useEffect(() => {\n // do not reload if the src is empty or it is not a full URL\n if (!src || src.substring(0, 4) !== 'http') return\n const cacheKey = sha1(src)\n try {\n const cacheHit = window.localStorage.getItem(cacheKey)\n\n if (cacheHit) {\n // console.log(`found ${src}, stopped download...`)\n setCachedSrc(cacheHit)\n return\n }\n } catch (e) {\n // sometimes loading fails\n }\n // console.log(`preloading ${src}, downloading...`)\n preloadImage(cacheKey, src)\n }, [src])\n\n useEffect(() => {\n if (userData) {\n setUser(userData)\n }\n // init_user()\n }, [userData])\n\n const user_list = [\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687315647102_My channel.svg',\n name: 'sideMenuMyChannel',\n id: '1',\n url: `/@${user && user.userName ? user.userName : ''}`,\n },\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687315647086_Analytics.svg',\n name: 'sideMenuAnalytics',\n id: '2',\n url: pages.analytics.path,\n },\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687315647100_Monetisatio.svg',\n name: 'sideMenuMonetisation',\n id: '3',\n url: pages.monetisation.path,\n },\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687315647101_My Account.svg',\n name: 'sideMenuMyAccount',\n id: '5',\n url: pages.account.path,\n },\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687315647102_Paid Subscriptions.svg',\n name: 'sideMenuPaidSubscriptions',\n id: '6',\n url: pages.paidSubscriptions.path,\n },\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687315647097_Log out.svg',\n name: 'sideMenuLogout',\n id: '7',\n url: pages.logout.path,\n },\n ]\n\n const intercept_str = (str: string, startIndex: number, endIndex: number) => {\n if (str) {\n const start_str = str.slice(0, startIndex)\n const end_str = str.slice(-endIndex)\n return `${start_str}...${end_str}`\n }\n }\n const copy_text = (str: string) => {\n const input = document.createElement('input')\n document.body.appendChild(input)\n input.setAttribute('value', str)\n input.select()\n if (document.execCommand('copy')) {\n document.execCommand('copy')\n // window.alert('Successful replication')\n }\n document.body.removeChild(input)\n }\n\n return (\n
\n \n
\n
\n
\n \n
    \n
  • \n {user && user.userName ? user.userName : ''}\n
  • \n
  • \n @\n
    \n {intercept_str(principal, 5, 4)}\n
    \n copy_text(principal)}\n src=\"https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687241091545_copy 1.svg\"\n alt=\"\"\n />\n
  • \n
\n
\n
\n {user_list.map((item: any) => {\n return (\n \n \n
\n {item.name && t(item.name)}\n
\n \n )\n })}\n
\n
\n
\n
\n )\n}\n\nexport default CachedImage\n","import { Link } from 'react-router-dom'\n// import { ReactComponent as LogoSvg } from './logo.svg'\n\nimport styles from './Logo.module.scss'\n\ninterface LogoProps {\n target?: string\n hideText?: boolean\n className?: string\n disableResponsive?: boolean\n}\n\nconst Logo = ({\n target,\n hideText,\n className,\n disableResponsive,\n}: LogoProps) => {\n return (\n <>\n \n \n \n \n \n \n \n //

\n // \n // {/* */}\n // \n // {!hideText && (\n // DSocial\n // )}\n // \n //

\n )\n}\n\nexport default Logo\n","import i18n from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport LanguageDetector from 'i18next-browser-languagedetector'\n\nimport { TRANSLATIONS_EN } from './en/translations'\nimport { TRANSLATIONS_DE } from './de/translations'\nimport { TRANSLATIONS_ZH } from './zh/translations'\nimport { TRANSLATIONS_JA } from './ja/translations'\nimport { TRANSLATIONS_RU } from './ru/translations'\nimport { TRANSLATIONS_VI } from './vi/translations'\nimport { TRANSLATIONS_HI } from './hi/translations'\n\nimport { setTimeAgoLocale } from '../lib/ago'\n\nexport const languages = [\n ['en', '🇬🇧', 'English'],\n ['de', '🇩🇪', 'German'],\n ['zh', '🇨🇳', 'Chinese'],\n ['ja', '🇯🇵', 'Japanese'],\n ['ru', '🇷🇺', 'Russian'],\n ['vi', '🇻🇳', 'Vietnamese'],\n ['hi', '🇮🇳', 'Hindi'],\n]\n\nexport const changeLanguage = (code: string) => {\n setTimeAgoLocale(code)\n i18n.changeLanguage(code)\n}\n\ni18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n lng: window.localStorage.i18nextLng,\n resources: {\n en: {\n translation: TRANSLATIONS_EN,\n },\n de: {\n translation: TRANSLATIONS_DE,\n },\n zh: {\n translation: TRANSLATIONS_ZH,\n },\n ja: {\n translation: TRANSLATIONS_JA,\n },\n ru: {\n translation: TRANSLATIONS_RU,\n },\n vi: {\n translation: TRANSLATIONS_VI,\n },\n hi: {\n translation: TRANSLATIONS_HI,\n },\n },\n fallbackLng: 'en',\n })\n\nsetTimeAgoLocale(i18n.language)\n","export const TRANSLATIONS_EN = {\n homePageTitle: 'Decentralised Social Media for Everyone',\n footer: 'Built by <1>@ashappdev<1>',\n\n headerMyChannel: 'My Channel',\n headerUpload: 'Upload',\n headerMyAccount: 'My Account',\n headerSignUpOrLogin: 'Login/Sign up',\n\n accountErrorUserNameEmpty: 'Please enter a user name',\n accountErrorProfilePhotoFailed:\n 'New profile photo failed to upload, please try again',\n accountErrorUserNameAlreadyTaken:\n 'This username is already taken, please try another',\n accountError: 'An error occurred, please try again',\n accountErrorValidImage: 'Please select a valid JPG/PNG file',\n accountErrorFailedResize: 'Failed to resize photo, please try again',\n accountPageTitle: 'My Account',\n accountUpdated: 'Your account is now updated',\n accountUserNameLabel: 'User name',\n accountChannelNameLabel: 'Channel name',\n accountProfilePhotoLabel: 'Profile photo',\n accountResizingPhoto: 'Resizing photo...',\n accountDone: 'Done',\n accountCancel: 'Cancel',\n accountLoadingPhoto: 'Loading photo...',\n accountChoosePhoto: 'Choose Photo',\n accountUploadingPhoto: 'Uploading profile photo...',\n accountUpdatingAccountDetails: 'Updating account details...',\n accountUpdateAccountDetails: 'Update Account Details',\n accountLogout: 'Logout',\n\n monetisationPageTitle: '💰 Monetisation',\n monetisationUpdated: 'Monetisation settings updated',\n monetisationICPAddress: 'ICP Address',\n monetisationICPAddressDesc:\n 'ICP address to receive payments (tips, paid subscriptions etc).',\n monetisationMonthlySubscription: 'Monthly Subscription',\n monetisationMonthlySubscriptionDesc:\n 'Amount you want to charge paid subscribers monthly.',\n monetisationUpdatingDetails: 'Updating...',\n monetisationUpdateDetails: 'Update settings',\n\n channelFailedToLoad: 'Failed to load channel info, please refresh the page',\n channelFailedToLoadVideos: 'Failed to load videos, please refresh the page',\n subscribers: '{{number}} subscribers',\n subscribersK: '{{number}}K subscribers',\n subscribersM: '{{number}}M subscribers',\n subscribersNone: 'No subscribers',\n subscribe: 'Subscribe',\n subscribed: 'Subscribed',\n join: 'Join',\n joined: 'Joined',\n channelNoVideos: 'No videos uploaded yet.',\n\n views: '{{number}} views',\n viewsK: '{{number}}K views',\n viewsM: '{{number}}M views',\n viewsNone: 'No views',\n\n loginPageTitle: 'Login/Register',\n loginIfNotRegistered: 'If you have not registered with DSocial before:',\n loginSignUpButton: 'Sign up with Internet Identity',\n loginIfRegistered: 'If you are already registered with DSocial:',\n loginButton: 'Login with Internet Identity',\n\n uploadDropHere: 'Drop here...',\n uploadFailedResize: 'Failed to resize photo, please try again',\n uploadErrorSelectThumbnail: 'Please select a thumbnail (JPG/PNG, 1280x720)',\n uploadErrorTransactionId: 'Please enter the video ID',\n uploadErrorVideoFile: 'Please select a video (MP4 only, max 1080p)',\n uploadErrorFailedUpload: 'Thumbnail failed to upload, please try again...',\n uploadErrorVideoFailedUpload: 'Video failed to upload, please try again...',\n uploadPageTitle: 'Upload your video',\n uploadInstallArConnect:\n \"Please install ArConnect Extension first. Follow the <1>Getting Started guide if you haven't already.\",\n uploadFirstTime:\n \"If this is the first time you've uploaded to DSocial, read this <1>Getting Started guide first.\",\n uploadThumbnailUploaded: 'Thumbnail uploaded',\n uploadThumbnailUploading: 'Thumbnail uploading, {{progress}}% done...',\n uploadVideoUploaded: 'Video uploaded',\n uploadVideoUploading: 'Video uploading, {{progress}}% done...',\n uploadVideoCreated: 'Video created',\n uploadVideoCreating: 'Creating video record...',\n uploadSelectThumbnail: 'Select thumbnail:',\n uploadResizingPhoto: 'Resizing photo...',\n uploadDone: 'Done',\n uploadCancel: 'Cancel',\n uploadDropLabel: 'Drop your thumbnail here (ideally 1280x720)...',\n uploadSelectThumbnailError: 'Please select a JPG/PNG thumbnail',\n uploadYourVideoWith:\n 'Upload your video with <1>DSocial Uploader App, once uploaded, copy the video ID and paste below.',\n uploadSelectVideo: 'Select video (MP4 only, max 1080p):',\n uploadPlaceholderTransactionId: 'Paste your video ID here...',\n uploadDropVideo: 'Drop your video here (MP4 only, 1080p max)...',\n uploadErrorDropVideo: 'Please select video (MP4 only, max 1080p)',\n uploadEnterTitle: 'Enter video title:',\n uploadPlaceholderTitle: 'Enter video title...',\n uploadEnterVideoDesc: 'Enter video description (optional):',\n uploadPlaceholderDesc: 'Enter description...',\n uploadButton: 'Upload',\n\n uploadErrorUploadToArWeaveFailed:\n 'Upload to AR Weave blockchain failed, please try again',\n uploadErrorTranscodingFailed: 'Failed to transcode video, please try again',\n uploadThumbnailUploadedToARWeave: 'Thumbnail uploaded to AR Weave blockchain',\n uploadThumbnailUploadingToARWeave:\n 'Thumbnail uploading to AR Weave blockchain, {{progress}}% done...',\n uploadVideoUploadedToARWeave: 'Video uploaded to AR Weave blockchain',\n uploadVideoUploadingToARWeave:\n 'Video uploading to AR Weave blockchain, {{progress}}% done...',\n uploadVideoTranscoded: 'Video transcoded',\n uploadVideoTranscoding: 'Video transcoding, {{progress}}% done...',\n uploadFileTooBig: 'Video uploads are limited to 2GB',\n\n video1Like: '1 Like',\n videoLikes: '{{likes}} Likes',\n videoLike: 'Like',\n videoComments: '{{comments}} Comments',\n videoAddPublicComment: 'Add a public comment...',\n videoCancelButton: 'Cancel',\n videoSubmitButton: 'Comment',\n videoShare: 'Share',\n videoEmbed: 'Embed',\n videoTip: 'Tip',\n videoFlag: 'Report',\n\n videoTipTitle: 'Tip {{name}}',\n videoTipChooseAmount: 'Choose the amount to tip {{name}} and click Tip',\n videoTipPay: 'Pay Tip',\n videoTipConfirmInstallPlug:\n 'You do not have Plug Wallet installed, install now?',\n videoTipProcessingPayment: 'Processing payment...',\n videoTipPaid: 'Tip successfully paid',\n videoTipPaidThankYou: 'Thank you! 🙏 {{name}} appreciates your tip ✨',\n videoTipAnon: 'Anon',\n videoTipComment: '✨ Tipped ${{amount}} ✨',\n\n videoJoinTitle: 'Join {{name}} Membership',\n\n notFoundError: 'Error Occurred',\n notFoundTitle: 'Page Not Found',\n notFoundContent: 'This page is not found. Go back to the <1>homepage.',\n\n topTitle: 'Top Channels',\n\n searchPlaceholder: 'Search for videos...',\n\n sorting_recommended: 'Subscriptions',\n sorting_hot: 'Trending',\n sorting_most_viewed: 'Most Viewed',\n sorting_top_rated: 'Top Rated',\n sorting_newest: 'Newest',\n sorting_daily: 'Daily',\n sorting_weekly: 'Weekly',\n sorting_monthly: 'Monthly',\n sorting_yearly: 'Yearly',\n sorting_all_time: 'All Time',\n\n feedbackSendFeedback: 'Send Feedback',\n feedbackCloseForm: 'Close Form',\n feedbackFeedbackType: 'Type',\n feedbackName: 'Name',\n feedback: 'Feedback',\n feedbackPlaceholder: 'Enter your feedback here...',\n feedbackSendFeedbackFormButton: 'Send Feedback 👋',\n feedbackFeedbackType_general: 'General',\n feedbackFeedbackType_bug: 'Bug',\n feedbackFeedbackType_idea: 'Idea',\n feedbackSubmitted: 'Thank you! Feedback submitted',\n\n sideMenuHome: 'Home',\n sideMenuUpload: 'Upload',\n sideMenuMyChannel: 'My Channel',\n sideMenuLanguage: 'language',\n sideMenuMyAccount: 'My Account',\n sideMenuLoginOrRegister: 'Login',\n sideMenuOpen: 'Open',\n sideMenuClose: 'Close',\n sideMenuReviewFlagged: 'Content Moderation',\n sideMenuLogout: 'Logout',\n sideMenuPaidSubscriptions: 'Paid Subscriptions',\n sideMenuMonetisation: 'Monetisation',\n sideMenuAnalytics: 'Analytics',\n\n contentModerationFlaggedContent: 'Content Moderation',\n contentModerationUserManagement: 'User Management',\n\n tipsLng: 'Tips',\n tipsContentLng:\n 'This feature will come in the next version. This feature will come in the next version.',\n}\n","export const TRANSLATIONS_DE = {\n homePageTitle: 'Dezentralisierte freie Social Media Plattform',\n footer: 'Erstellt von <1>@DSocialApp<1>',\n\n headerMyChannel: 'Mein Kanal',\n headerUpload: 'Hochladen',\n headerMyAccount: 'Mein Konto',\n headerSignUpOrLogin: 'Registrieren / Anmelden',\n\n accountErrorUserNameEmpty: 'Bitte gib einen Benutzernamen an',\n accountErrorProfilePhotoFailed:\n 'Neues Profilbild konnte nicht hochgeladen werden, bitte versuche es nochmals',\n accountErrorUserNameAlreadyTaken:\n 'Dieser Benutzername wird bereits verwendet, bitte wähle einen anderen',\n accountError: 'Ein Fehler ist aufgetreten, bitte versuche es nochmals',\n accountErrorValidImage: 'Wähle bitte eine gültige JPG/PNG Datei aus',\n accountErrorFailedResize:\n 'Das Bild konnte nicht zugeschnitten werden, bitte versuche es nochmals',\n accountPageTitle: 'Mein Konto',\n accountUpdated: 'Dein Konto wurde erfolgreich aktualisiert',\n accountUserNameLabel: 'Benutzername',\n accountChannelNameLabel: 'Kanal Name',\n accountProfilePhotoLabel: 'Profilbild',\n accountResizingPhoto: 'Wird zugeschnitten...',\n accountDone: 'Fertig',\n accountCancel: 'Abbrechen',\n accountLoadingPhoto: 'Bild wird geladen...',\n accountChoosePhoto: 'Wähle ein Bild aus',\n accountUploadingPhoto: 'Profilbild wird hochgeladen...',\n accountUpdatingAccountDetails: 'Kontoinformationen werden aktualisiert...',\n accountUpdateAccountDetails: 'Kontoinformationen aktualisieren',\n accountLogout: 'Abmelden',\n\n channelFailedToLoad:\n 'Informationen zum Kanal konnten nicht geladen werden, bitte aktualisiere die Seite',\n channelFailedToLoadVideos:\n 'Video konnte nicht geladen werden, bitte aktualisiere die Seite',\n subscribers: '{{number}} Abonnenten',\n subscribersK: '{{number}}K Abonnenten',\n subscribersM: '{{number}}M Abonnenten',\n subscribersNone: 'Keine Abonnenten',\n subscribe: 'Abonnieren',\n subscribed: 'Abonniert',\n channelNoVideos: 'Bisher keine Videos hochgeladen.',\n\n views: '{{number}} Aufrufe',\n viewsK: '{{number}}K Aufrufe',\n viewsM: '{{number}}M Aufrufe',\n viewsNone: 'Keine Aufrufe',\n\n loginPageTitle: 'Anmelden/Registrieren',\n loginIfNotRegistered:\n 'Falls du bisher noch nicht bei DSocial registriert bist:',\n loginSignUpButton: 'Registriere dich mit deiner Internet Identity',\n loginIfRegistered: 'Falls du bereits bei DSocial registriert bist:',\n loginButton: 'Melde dich mit deiner Internet Identity an',\n\n uploadDropHere: 'Hier ablegen...',\n uploadFailedResize:\n 'Das Bild konnte nicht zugeschnitten werden, bitte versuche es nochmals',\n uploadErrorSelectThumbnail:\n 'Wähle bitte ein Vorschaubild aus (JPG/PNG, 1280x720)',\n uploadErrorTransactionId: 'Gib bitte eine Video ID ein',\n uploadErrorVideoFile: 'Wähle bitte ein Video aus (MP4 only, max 1080p)',\n uploadErrorFailedUpload:\n 'Vorschaubild konnte nicht hochgeladen werden, bitte versuche es nochmals...',\n uploadErrorVideoFailedUpload:\n 'Video konnte nicht hochgeladen werden, bitte versuche es nochmals...',\n uploadPageTitle: 'Video hochladen',\n uploadInstallArConnect:\n 'Bitte installiere zuerst die ArConnect Erweiterung. Folge dazu der <1>Erste Schritte Anleitung, falls du das nicht bereits getan hast.',\n uploadFirstTime:\n 'Falls du zum ersten Mal ein Video auf DSocial hochlädst, lies bitte zuerst die <1>Erste Schritte Anleitung.',\n uploadThumbnailUploaded: 'Vorschaubild hochgeladen',\n uploadThumbnailUploading:\n 'Vorschaubild wird hochgeladen, {{progress}}% fertig...',\n uploadVideoUploaded: 'Video hochgeladen',\n uploadVideoUploading: 'Video wird hochgeladen, {{progress}}% fertig...',\n uploadVideoCreated: 'Video erstellt',\n uploadVideoCreating: 'Video Eintrag wird erstellt...',\n uploadSelectThumbnail: 'Vorschaubild auswählen:',\n uploadResizingPhoto: 'Bild wird zugeschnitten...',\n uploadDone: 'Fertig',\n uploadCancel: 'Abbrechen',\n uploadDropLabel: 'Lege hier dein Vorschaubild ab (idealerweise 1280x720)...',\n uploadSelectThumbnailError: 'Bitte wähle ein JPG/PNG Vorschaubild aus',\n uploadYourVideoWith:\n 'Lade dein Video mit der <1>DSocial Uploader App hoch. Wenn du fertig bist, kopiere die Video ID und füge sie hier ein.',\n uploadSelectVideo: 'Wähle ein Video aus (Nur MP4, höchstens 1080p):',\n uploadPlaceholderTransactionId: 'Hier Video ID einfügen...',\n uploadDropVideo: 'Lege dein Video hier ab (Nur MP4, höchstens 1080p)...',\n uploadErrorDropVideo: 'Wähle bitte ein Video aus (Nur MP4, höchstens 1080p)',\n uploadEnterTitle: 'Gib den Titel des Videos ein:',\n uploadPlaceholderTitle: 'Hier Video Titel eingeben...',\n uploadEnterVideoDesc: 'Gib eine Video Beschreibung ein (optional):',\n uploadPlaceholderDesc: 'Hier Videobeschreibung eingeben...',\n uploadButton: 'Hochladen',\n\n uploadErrorUploadToArWeaveFailed:\n 'Das Hochladen zur AR Weave Blockchain ist fehlgeschlagen, bitte versuche es nochmals',\n uploadErrorTranscodingFailed:\n 'Video konnte nicht verarbeitet werden, bitte versuche es nochmals',\n uploadThumbnailUploadedToARWeave:\n 'Vorschaubild wurde zur AR Weave Blockchain hochgeladen',\n uploadThumbnailUploadingToARWeave:\n 'Vorschaubild wird zur AR Weave Blockchain hochgeladen, {{progress}}% fertig...',\n uploadVideoUploadedToARWeave:\n 'Video wurde zur AR Weave Blockchain hochgeladen',\n uploadVideoUploadingToARWeave:\n 'Video wird zur AR Weave Blockchain hochgeladen, {{progress}}% fertig...',\n uploadVideoTranscoded: 'Video verarbeitet',\n uploadVideoTranscoding: 'Video wird verarbeitet, {{progress}}% fertig...',\n uploadFileTooBig: 'Video Uploads sind auf 2GB begrenzt',\n\n video1Like: '1 Like',\n videoLikes: '{{likes}} Likes',\n videoLike: 'Like',\n videoComments: '{{comments}} Kommentare',\n videoAddPublicComment: 'Öffentlichen Kommentar hinzufügen...',\n videoCancelButton: 'Abbrechen',\n videoSubmitButton: 'Kommentieren',\n\n notFoundError: 'Ein Fehler ist aufgetreten',\n notFoundTitle: 'Seite nicht gefunden',\n notFoundContent:\n 'Die Seite wurde nicht gefunden. Zurück zur <1>homepage.',\n\n topTitle: 'Top Kanäle',\n\n searchPlaceholder: 'Videos suchen...',\n\n sorting_recommended: 'Abonnements',\n sorting_hot: 'Heiß',\n sorting_most_viewed: 'Am häufigsten gesehen',\n sorting_top_rated: 'Bestbewertet',\n sorting_newest: 'Neueste',\n sorting_daily: 'Täglich',\n sorting_weekly: 'Wöchentlich',\n sorting_monthly: 'Monatlich',\n sorting_yearly: 'Jährlich',\n sorting_all_time: 'Alle Zeit',\n\n feedbackSendFeedback: 'Feedback schicken',\n feedbackCloseForm: 'Enge Form',\n feedbackFeedbackType: 'Typ',\n feedbackName: 'name',\n feedback: 'Rückmeldung',\n feedbackPlaceholder: 'Geben Sie hier Ihr Feedback ein ...',\n feedbackSendFeedbackFormButton: 'Feedback schicken👋',\n feedbackFeedbackType_general: 'Allgemein',\n feedbackFeedbackType_bug: 'Insekt',\n feedbackFeedbackType_idea: 'Idee',\n feedbackSubmitted: 'Danke!Feedback eingereicht',\n\n sideMenuHome: 'Heim',\n sideMenuUpload: 'Hochladen',\n sideMenuMyChannel: 'Mein Kanal',\n sideMenuLanguage: 'Sprache',\n sideMenuMyAccount: 'Mein Konto',\n sideMenuLoginOrRegister: 'Anmeldung',\n sideMenuOpen: 'Offen',\n sideMenuClose: 'Schließen',\n sideMenuReviewFlagged: 'Überprüfung markierter Inhalte',\n sideMenuLogout: 'Abmelden',\n tipsLng: 'Tipp.',\n tipsContentLng:\n 'Diese funktion wird in der nächsten version erscheinen. Diese funktion wird in der nächsten version erscheinen.',\n}\n","export const TRANSLATIONS_ZH = {\n homePageTitle: '每个人的去中心化社交媒体',\n footer: '由<1>@DSocialApp 构建',\n\n headerMyChannel: '我的频道',\n headerUpload: '上传',\n headerMyAccount: '我的账户',\n headerSignUpOrLogin: '注册登录',\n\n accountErrorUserNameEmpty: '请填入一个用户名',\n accountErrorProfilePhotoFailed:\n 'New profile photo failed to upload, please try again',\n accountErrorUserNameAlreadyTaken: '新的个人资料照片上传失败,请重试',\n accountError: '发生错误,请重试',\n accountErrorValidImage: '请选择一个有效的 JPG/PNG 文件',\n accountErrorFailedResize: '无法调整照片大小,请重试',\n accountPageTitle: '我的账户',\n accountUpdated: '您的帐户现已更新',\n accountUserNameLabel: '用户名',\n accountChannelNameLabel: '频道名称',\n accountProfilePhotoLabel: '头像照片',\n accountResizingPhoto: '调整照片大小...',\n accountDone: '完毕',\n accountCancel: '取消',\n accountLoadingPhoto: '正在加载照片...',\n accountChoosePhoto: '选择照片',\n accountUploadingPhoto: '正在上传个人资料照片...',\n accountUpdatingAccountDetails: '正在更新帐户详细信息...',\n accountUpdateAccountDetails: '更新帐户详细信息',\n accountLogout: '登出',\n\n channelFailedToLoad: '加载频道信息失败,请刷新页面',\n channelFailedToLoadVideos: '加载视频失败,请刷新页面',\n subscribers: '{{number}} 个订阅者',\n subscribersK: '{{number}}K 个订阅者',\n subscribersM: '{{number}}M 个订阅者',\n subscribersNone: '没有订阅者',\n subscribe: '订阅',\n subscribed: '已订阅',\n channelNoVideos: '还没有上传视频',\n\n views: '{{number}} 次观看',\n viewsK: '{{number}}K 次观看',\n viewsM: '{{number}}M 次观看',\n viewsNone: '没有意见',\n\n loginPageTitle: '登录/注册',\n loginIfNotRegistered: '如果您之前没有注册过:',\n loginSignUpButton: '注册',\n loginIfRegistered: '如果您已经注册',\n loginButton: '登录',\n\n uploadDropHere: '丢这里...',\n uploadFailedResize: '无法调整照片大小,请重试',\n uploadErrorSelectThumbnail: '请选择缩略图(JPG/PNG,1280x720)',\n uploadErrorTransactionId: '请输入视频ID',\n uploadErrorVideoFile: '请选择一个视频(仅限 MP4,最大 1080p)',\n uploadErrorFailedUpload: '缩略图上传失败,请重试...',\n uploadErrorVideoFailedUpload: '视频上传失败,请重试...',\n uploadPageTitle: '上传您的视频',\n uploadInstallArConnect:\n '请先安装 ArConnect 扩展。 如果您还没有,请按照<1>入门指南进行操作',\n uploadFirstTime:\n '如果这是您第一次上传到 DSocial,请先阅读此<1>入门指南。',\n uploadThumbnailUploaded: '已上传缩略图',\n uploadThumbnailUploading: '缩略图上传中,{{progress}}% 已完成...',\n uploadVideoUploaded: '视频上传',\n uploadVideoUploading: '视频上传中,{{progress}}% 已完成...',\n uploadVideoCreated: '视频已创建',\n uploadVideoCreating: '正在创建视频记录...',\n uploadSelectThumbnail: '选择缩略图:',\n uploadResizingPhoto: '调整照片大小...',\n uploadDone: '完毕',\n uploadCancel: '取消',\n uploadDropLabel: '将您的缩略图放在这里(最好是 1280x720)...',\n uploadSelectThumbnailError: '请选择 JPG/PNG 缩略图',\n uploadYourVideoWith:\n 'Upload your video with <1>DSocial Uploader App, once uploaded, copy the video ID and paste below.',\n uploadSelectVideo: '选择视频(仅限 MP4,最大 1080p):',\n uploadPlaceholderTransactionId: '在此处粘贴您的视频 ID...',\n uploadDropVideo: '将您的视频放在这里(仅限 MP4,最大 1080p)...',\n uploadErrorDropVideo: '请选择视频(仅限 MP4,最大 1080p)',\n uploadEnterTitle: '输入视频标题:',\n uploadPlaceholderTitle: '输入视频标题...',\n uploadEnterVideoDesc: '输入视频描述(可选):',\n uploadPlaceholderDesc: '输入说明...',\n uploadButton: '上传',\n uploadFileTooBig: '视频上传限制为2GB',\n\n uploaderAppPageTitle: '下载 DSocial 上传器应用程序',\n uploaderAppDesc:\n 'DSocial 将权力还给人民。 使用社交上传应用程序处理准备流式传输的视频并将您的视频直接上传到 ARWeave 区块链',\n uploaderAppDownload: '下载 {{os}}',\n uploaderAppNotAvailable:\n 'DSocial Uploader App 目前仅适用于 Mac,Windows 和 Linux 版本即将推出。',\n\n video1Like: '1 喜欢',\n videoLikes: '{{likes}} 点赞',\n videoLike: '喜欢',\n videoComments: '{{comments}} 评论',\n videoAddPublicComment: '添加公开评论...',\n videoCancelButton: '取消',\n videoSubmitButton: '评论',\n\n gettingStartedTitle: '作为创作者入门',\n gettingStartedPara1: '欢迎!',\n gettingStartedPara2:\n 'DSocial 上的视频和缩略图存储在 ARWeave 区块链上。 这是一个专门用于持久存储的抗审查区块链,这意味着您的视频和缩略图将比您活得更久。 因此,您需要一个带有 $AR 代币的钱包才能将视频上传到 DSocial,别担心,这很简单。 如果您有任何问题,请通过 Twitter 上的 <1>@DSocialApp 与我们联系。',\n gettingStartedPara3:\n '如果您的钱包中已经有 $AR 代币,您可以返回<1>上传页面',\n gettingStartedHeading1: '第 1 步:安装 ArConnect 扩展并创建/加载您的钱包',\n gettingStartedPara4:\n '安装 ArConnect 扩展来管理您的数字钱包。 它很容易在任何 Chrome/Firefox 浏览器上使用。',\n gettingStartedGetArConnect: '在 ArConnect 上创建/加载钱包',\n gettingStartedHeading2: '第 2 步:使用 $AR 代币充值钱包',\n gettingStartedPara5:\n '使用 Ramp Network 或 Transak 可以轻松地使用借记卡/信用卡添加 $AR 代币。 但是,如果您更喜欢使用其中一个交易所,ARDrive 会在<1>此处汇总一份支持 $AR 代币的有用交易所列表。',\n gettingStartedPara6:\n '注意:DSocial 不会从您使用这些服务中获得任何佣金或利益。 这些只是充值 $AR 代币的最简单方法。',\n gettingStartedTransak: '使用 Transak 购买 AR',\n gettingStartedRamp: '使用 RampNetwork 购买 AR',\n gettingStartedHeading3: '第 3 步:安装 DSocialUploaderApp',\n gettingStartedPara7: '要上传视频,您需要安装 <1>DSocial Uploader App',\n gettingStartedHeading4: '第 3 步:将您的视频添加到社交',\n gettingStartedPara8: '返回<1>上传页面并上传您的第一个视频!',\n\n notFoundError: '错误发生',\n notFoundTitle: '找不到网页',\n notFoundContent: '找不到此页面。 返回<1>主页',\n\n topTitle: '热门频道',\n\n searchPlaceholder: '搜索视频...',\n\n sorting_recommended: '订阅',\n sorting_hot: '趋势',\n sorting_most_viewed: '最受关注',\n sorting_top_rated: '评分最高',\n sorting_newest: '最新',\n sorting_daily: '日常',\n sorting_weekly: '每周',\n sorting_monthly: '月刊',\n sorting_yearly: '每年',\n sorting_all_time: '整天',\n\n feedbackSendFeedback: '发送反馈',\n feedbackCloseForm: '关闭表格',\n feedbackFeedbackType: '类别',\n feedbackName: '姓名',\n feedback: '回馈',\n feedbackPlaceholder: '在此处输入您的反馈...',\n feedbackSendFeedbackFormButton: '发送反馈 👋',\n feedbackFeedbackType_general: '一般的',\n feedbackFeedbackType_bug: '漏洞',\n feedbackFeedbackType_idea: '主意',\n feedbackSubmitted: '谢谢! 已提交反馈',\n\n sideMenuHome: '家',\n sideMenuUpload: '上传',\n sideMenuMyChannel: '我的频道',\n sideMenuLanguage: '语言',\n sideMenuMyAccount: '我的账户',\n sideMenuLoginOrRegister: '登录',\n sideMenuOpen: '打开',\n sideMenuClose: '关闭',\n sideMenuReviewFlagged: '查看标记的内容',\n sideMenuLogout: '登出',\n tipsLng: '提示',\n tipsContentLng:\n '这个功能将在下一个版本中出现。这个功能将在下一个版本中出现。',\n}\n","export const TRANSLATIONS_JA = {\n homePageTitle: 'みんなのための分散ソーシャルメディア',\n footer: '<1>@DSocialAppによって構築されました',\n\n headerMyChannel: '私のチャンネル',\n headerUpload: 'アップロード',\n headerMyAccount: 'マイアカウント',\n headerSignUpOrLogin: 'サインアップ/ログイン',\n\n accountErrorUserNameEmpty: 'ユーザー名を入力して下さい',\n accountErrorProfilePhotoFailed:\n '新しいプロフィール写真のアップロードに失敗しました、もう一度やり直してください',\n accountErrorUserNameAlreadyTaken:\n 'このユーザー名はすでに取られています、お試しください',\n accountError: 'エラーが発生しました。もう一度やり直してください',\n accountErrorValidImage: '有効なJPG / PNGファイルを選択してください',\n accountErrorFailedResize:\n '写真のサイズ変更に失敗しました、もう一度やり直してください',\n accountPageTitle: 'マイアカウント',\n accountUpdated: 'あなたのアカウントが更新されました',\n accountUserNameLabel: 'ユーザー名',\n accountChannelNameLabel: 'チャネル名',\n accountProfilePhotoLabel: 'プロフィール写真',\n accountResizingPhoto: '写真のサイズ変更...',\n accountDone: '終わり',\n accountCancel: 'キャンセル',\n accountLoadingPhoto: '写真を読み込む...',\n accountChoosePhoto: '写真を選択',\n accountUploadingPhoto: 'プロフィール写真のアップロード...',\n accountUpdatingAccountDetails: 'アカウントの詳細を更新します...',\n accountUpdateAccountDetails: 'アカウントの詳細を更新します',\n accountLogout: 'ログアウト',\n\n channelFailedToLoad: 'Failed to load channel info, please refresh the page',\n channelFailedToLoadVideos:\n 'ビデオのロードに失敗しました、ページを更新してください',\n subscribers: '{{number}} 加入',\n subscribersK: '{{number}}K 加入',\n subscribersM: '{{number}}M 加入',\n subscribersNone: '購読者はありません',\n subscribe: '申し込む',\n subscribed: '購読した',\n channelNoVideos: 'まだビデオがアップロードされていません',\n\n views: '{{number}} ビュー',\n viewsK: '{{number}}K ビュー',\n viewsM: '{{number}}M ビュー',\n viewsNone: 'ビューはありません',\n\n loginPageTitle: 'ログイン/登録',\n loginIfNotRegistered: '前に登録していない場合',\n loginSignUpButton: 'サインアップ',\n loginIfRegistered: 'すでに登録されている場合:',\n loginButton: 'ログイン',\n\n uploadDropHere: 'ここに落ちる...',\n uploadFailedResize:\n '写真のサイズ変更に失敗しました、もう一度やり直してください',\n uploadErrorSelectThumbnail:\n 'サムネイルを選択してください(JPG / PNG、1280x720)',\n uploadErrorTransactionId: 'ビデオIDを入力してください',\n uploadErrorVideoFile: 'ビデオを選択してください(MP4のみ、最大1080p)',\n uploadErrorFailedUpload:\n 'サムネイルアップロードに失敗しました、もう一度やり直してください...',\n uploadErrorVideoFailedUpload:\n 'ビデオアップロードに失敗しました、もう一度やり直してください...',\n uploadPageTitle: 'あなたのビデオをアップロードしてください',\n uploadInstallArConnect:\n '最初にArConnect拡張機能をインストールしてください。 まだ行っていない場合は、<1>入門ガイドに従ってください',\n uploadFirstTime:\n 'これがDSocialにアップロードしたときは、この<1>はじめにガイドを最初に読んでください',\n uploadThumbnailUploaded: 'サムネイルアップロード',\n uploadThumbnailUploading:\n 'サムネイルのアップロード、 {{progress}}% 終わり...',\n uploadVideoUploaded: 'ビデオアップロード',\n uploadVideoUploading: 'ビデオアップロード、 {{progress}}% 終わり...',\n uploadVideoCreated: 'ビデオ作成',\n uploadVideoCreating: 'ビデオレコードを作成する...',\n uploadSelectThumbnail: 'サムネイルを選択してください',\n uploadResizingPhoto: '写真のサイズ変更...',\n uploadDone: '終わり',\n uploadCancel: 'キャンセル',\n uploadDropLabel:\n 'ここであなたのサムネイルを落としてください(理想的には1280x720)...',\n uploadSelectThumbnailError: 'JPG / PNGサムネイルを選択してください',\n uploadYourVideoWith:\n '<1> DSocial Uploader App でビデオをアップロードし、アップロードしたら、ビデオIDをコピーして下のペーストをコピーします',\n uploadSelectVideo: 'ビデオを選択してください(MP4のみ、最大1080p',\n uploadPlaceholderTransactionId: 'ビデオIDをここに貼り付けます...',\n uploadDropVideo: 'ここでビデオをドロップします(MP4のみ、最大1080p)...',\n uploadErrorDropVideo: 'ビデオを選択してください(MP4のみ、最大1080p)',\n uploadEnterTitle: 'ビデオのタイトルを入力してください:',\n uploadPlaceholderTitle: 'ビデオのタイトルを入力してください...',\n uploadEnterVideoDesc: 'ビデオの説明を入力してください(オプション):',\n uploadPlaceholderDesc: '説明を入力してください...',\n uploadButton: 'アップロード',\n uploadFileTooBig: 'ビデオアップロードは2GBに制限されています',\n\n uploaderAppPageTitle: 'ダウンロード DSocial Uploader App',\n uploaderAppDesc:\n 'DSOCialは人々に力を返金します。ソーシャルアップローダアプリを使用してビデオをストリーミングの準備ができて、ビデオをArweaveブロックチェーンに直接アップロードする.',\n uploaderAppDownload: '{{os}} のダウンロード',\n uploaderAppNotAvailable:\n 'DSocial Uploader App 今すぐMacでも利用可能です、WindowsおよびLinuxのバージョンはもうすぐ外になります.',\n\n video1Like: '1 お気に入り',\n videoLikes: '{{likes}} いいね',\n videoLike: 'お気に入り',\n videoComments: '{{comments}} コメント',\n videoAddPublicComment: 'パブリックコメントを追加してください...',\n videoCancelButton: 'キャンセル',\n videoSubmitButton: 'コメント',\n\n gettingStartedTitle: 'クリエイターとして始める',\n gettingStartedPara1: '社会へようこそ!',\n gettingStartedPara2:\n 'DSocialのビデオとサムネイルはARWeaveブロックチェーンに保存されています。これは特に永続的な保管専用の検閲抵抗ブロックチェーンです。これはあなたのビデオとサムネイルがあなたを長生きさせることを意味します。そのように、あなたはDSocialにビデオをアップロードするために$ ARトークンを持つ財布を必要とするでしょう、それは非常に単純なことを心配しないでください。問題がある場合は、Twitterで<1>@dsocialappで私たちに手を差し伸べる.',\n gettingStartedPara3:\n 'If you already have $AR tokens in a wallet, you can go back to the <1>upload page.',\n gettingStartedHeading1:\n 'Step 1: Install ArConnect Extension & Create/Load Your Wallet',\n gettingStartedPara4:\n \"Install ArConnect Extension to manage your digital wallet. It's easy to use on any Chrome/Firefox browser.\",\n gettingStartedGetArConnect: 'Create/load wallet on ArConnect',\n gettingStartedHeading2: 'Step 2: Top Up Wallet with $AR Tokens',\n gettingStartedPara5:\n 'Adding $AR tokens with a debit/credit card is easy with either Ramp Network or Transak. But if you prefer to use one of the exchanges, ARDrive put together a helpful list of exchanges that support $AR tokens <1>here.',\n gettingStartedPara6:\n 'Note: DSocial do NOT receive any commission or benefit from you using these services. These are just the easiest way to top up with $AR tokens.',\n gettingStartedTransak: 'Purchase AR using Transak',\n gettingStartedRamp: 'Purchase AR using the Ramp Network',\n gettingStartedHeading3: 'Step 3: Install DSocial Uploader App',\n gettingStartedPara7:\n \"To upload videos you'll need to install the <1>DSocial Uploader App\",\n gettingStartedHeading4: 'Step 3: Add your video to DSocial',\n gettingStartedPara8:\n 'Go back to the <1>upload page and upload your first video!',\n\n notFoundError: 'エラーが発生しました',\n notFoundTitle: 'ページが見つかりません',\n notFoundContent: 'このページは見つかりません。<1>ホームページに戻る',\n\n topTitle: 'トップチャンネル',\n\n searchPlaceholder: 'ビデオを検索...',\n\n sorting_recommended: 'サブスクリプション',\n sorting_hot: '熱い',\n sorting_most_viewed: '最も見られました',\n sorting_top_rated: 'トップレート',\n sorting_newest: '最新',\n sorting_daily: '毎日',\n sorting_weekly: '毎週',\n sorting_monthly: '毎月',\n sorting_yearly: '毎年',\n sorting_all_time: 'いつも',\n\n feedbackSendFeedback: 'フィードバックを送信します',\n feedbackCloseForm: 'フォームを閉じます',\n feedbackFeedbackType: 'タイプ',\n feedbackName: '名前',\n feedback: 'フィードバック',\n feedbackPlaceholder: 'ここにあなたのフィードバックを入力してください...',\n feedbackSendFeedbackFormButton: 'フィードバックを送信します 👋',\n feedbackFeedbackType_general: '全般的',\n feedbackFeedbackType_bug: 'バグ',\n feedbackFeedbackType_idea: 'アイディア',\n feedbackSubmitted: 'ありがとうございました!送信されたフィードバック',\n\n sideMenuHome: '家',\n sideMenuUpload: 'アップロード',\n sideMenuMyChannel: '私のチャンネル',\n sideMenuLanguage: 'げんご',\n sideMenuMyAccount: 'マイアカウント',\n sideMenuLoginOrRegister: 'ログイン',\n sideMenuOpen: '開ける',\n sideMenuClose: '選ぶ',\n sideMenuReviewFlagged: 'フラグ付きコンテンツを確認します',\n sideMenuLogout: 'ログアウト',\n tipsLng: 'チップ',\n tipsContentLng:\n 'この機能は次のバージョンで提供されます。この機能は次のバージョンで提供されます。',\n}\n","export const TRANSLATIONS_RU = {\n homePageTitle: 'Децентрализованные социальные сети для всех',\n footer: 'Построен <1>@DSocialApp<1>',\n\n headerMyChannel: 'Мой канал',\n headerUpload: 'Загрузить',\n headerMyAccount: 'Мой аккаунт',\n headerSignUpOrLogin: 'Зарегестрироваться войти',\n\n accountErrorUserNameEmpty: 'Пожалуйста введите имя пользователя',\n accountErrorProfilePhotoFailed:\n 'Новая фотография профиля не удалось загрузить, пожалуйста, попробуйте еще раз',\n accountErrorUserNameAlreadyTaken:\n 'Это имя пользователя уже занято, пожалуйста, попробуйте другой',\n accountError: 'Произошла ошибка. Пожалуйста, попробуйте еще раз',\n accountErrorValidImage: 'Пожалуйста, выберите действительный файл JPG / PNG',\n accountErrorFailedResize:\n 'Не удалось разместить фото, пожалуйста, попробуйте еще раз',\n accountPageTitle: 'Мой аккаунт',\n accountUpdated: 'Ваша учетная запись теперь обновляется',\n accountUserNameLabel: 'Имя пользователя',\n accountChannelNameLabel: 'Название канала',\n accountProfilePhotoLabel: 'Аватар',\n accountResizingPhoto: 'Размеры фото...',\n accountDone: 'Выполнено',\n accountCancel: 'Отмена',\n accountLoadingPhoto: 'Загрузка фото...',\n accountChoosePhoto: 'Выбрать фото',\n accountUploadingPhoto: 'Загрузка профиля Фото...',\n accountUpdatingAccountDetails: 'Обновление деталей аккаунта...',\n accountUpdateAccountDetails: 'Обновить данные учетной записи',\n accountLogout: 'Выйти',\n\n channelFailedToLoad:\n 'Не удалось загрузить информацию канала, пожалуйста, обновите страницу',\n channelFailedToLoadVideos:\n 'Не удалось загрузить видео, пожалуйста, обновите страницу',\n subscribers: '{{number}} подписчики',\n subscribersK: '{{number}}K подписчики',\n subscribersM: '{{number}}M подписчики',\n subscribersNone: 'Нет подписчиков',\n subscribe: 'Подписывайся',\n subscribed: 'Подписаться',\n channelNoVideos: 'Никакие видео не загружены.',\n\n views: '{{number}} Просмотры',\n viewsK: '{{number}}K Просмотры',\n viewsM: '{{number}}M Просмотры',\n viewsNone: 'Нет взглядов',\n\n loginPageTitle: 'Войти / Регистрация',\n loginIfNotRegistered: 'Если вы не зарегистрированы раньше:',\n loginSignUpButton: 'Подписаться',\n loginIfRegistered: 'Если вы уже зарегистрированы',\n loginButton: 'Авторизоваться',\n\n uploadDropHere: 'Отбрасывать здесь...',\n uploadFailedResize:\n 'Не удалось разместить фото, пожалуйста, попробуйте еще раз',\n uploadErrorSelectThumbnail:\n 'Пожалуйста, выберите эскиз (JPG / PNG, 1280x720)',\n uploadErrorTransactionId: 'Пожалуйста, введите идентификатор видео',\n uploadErrorVideoFile: 'Пожалуйста, выберите видео (только MP4, MAX 1080P)',\n uploadErrorFailedUpload:\n 'Миниатюра не удалось загрузить, пожалуйста, попробуйте еще раз...',\n uploadErrorVideoFailedUpload:\n 'Видео не удалось загрузить, пожалуйста, попробуйте еще раз...',\n uploadPageTitle: 'Загрузите свое видео',\n uploadInstallArConnect:\n 'Пожалуйста, сначала установите расширение Arconnect.Следуйте руководству <1> Начало работы Если вы уже.',\n uploadFirstTime:\n 'Если это первый раз, когда вы загрузили в DSocial, прочитайте это <1> Начало работы Первым.',\n uploadThumbnailUploaded: 'Миниатюра загружена',\n uploadThumbnailUploading: 'Ungyail Загрузка, {{progress}}%...',\n uploadVideoUploaded: 'Загружено видео',\n uploadVideoUploading: 'Загрузка видео, {{progress}}%...',\n uploadVideoCreated: 'Видео создано',\n uploadVideoCreating: 'Создание записи видео...',\n uploadSelectThumbnail: 'Выберите миниатюру:',\n uploadResizingPhoto: 'Размеры фото...',\n uploadDone: 'Выполнено',\n uploadCancel: 'Отмена',\n uploadDropLabel: 'Снимите эскиз здесь (в идеале 1280x720)...',\n uploadSelectThumbnailError: 'Пожалуйста, выберите jpg / png миниатюру',\n uploadYourVideoWith:\n 'Загрузите свое видео с помощью App Dsocial Uployer App После загрузки скопируйте идентификатор видео и вставьте ниже.',\n uploadSelectVideo: 'Выберите видео (только MP4, MAX 1080P):',\n uploadPlaceholderTransactionId: 'Вставьте свой видео ID здесь...',\n uploadDropVideo: 'Выложите видео здесь (только MP4, 1080p Max)...',\n uploadErrorDropVideo: 'Пожалуйста, выберите видео (только MP4, MAX 1080P)',\n uploadEnterTitle: 'Введите название видео:',\n uploadPlaceholderTitle: 'Введите название видео...',\n uploadEnterVideoDesc: 'Введите описание видео (необязательно):',\n uploadPlaceholderDesc: 'Введите описание...',\n uploadButton: 'Загрузить',\n uploadFileTooBig: 'Загрузка видео ограничена до 2GB',\n\n uploaderAppPageTitle: 'Download DSocial Uploader App',\n uploaderAppDesc:\n 'DSocial gives the power back to the people. Use the DSocial Uploader App to process videos ready for streaming & upload your video straight to the ARWeave blockchain.',\n uploaderAppDownload: 'Download for {{os}}',\n uploaderAppNotAvailable:\n 'DSocial Uploader App is only available for Mac right now, Windows and Linux version will be out soon.',\n\n video1Like: '1 вроде',\n videoLikes: '{{likes}} любит',\n videoLike: 'Нравиться',\n videoComments: '{{comments}} Комментарии',\n videoAddPublicComment: 'Добавить публичный комментарий...',\n videoCancelButton: 'Отмена',\n videoSubmitButton: 'Комментарий',\n\n gettingStartedTitle: 'Getting Started as a Creator',\n gettingStartedPara1: 'Welcome to DSocial!',\n gettingStartedPara2:\n \"Videos and thumbnails on DSocial are stored on the ARWeave blockchain. This is a censorship resistent blockchain specifically for persistent storage, this means your videos and thumbnails will outlive you. As such, you will need a wallet with $AR tokens to upload videos to DSocial, don't worry it's very simple. If you have any issues, reach out to us at <1>@DSocialApp on Twitter.\",\n gettingStartedPara3:\n 'If you already have $AR tokens in a wallet, you can go back to the <1>upload page.',\n gettingStartedHeading1:\n 'Step 1: Install ArConnect Extension & Create/Load Your Wallet',\n gettingStartedPara4:\n \"Install ArConnect Extension to manage your digital wallet. It's easy to use on any Chrome/Firefox browser.\",\n gettingStartedGetArConnect: 'Create/load wallet on ArConnect',\n gettingStartedHeading2: 'Step 2: Top Up Wallet with $AR Tokens',\n gettingStartedPara5:\n 'Adding $AR tokens with a debit/credit card is easy with either Ramp Network or Transak. But if you prefer to use one of the exchanges, ARDrive put together a helpful list of exchanges that support $AR tokens <1>here.',\n gettingStartedPara6:\n 'Note: DSocial do NOT receive any commission or benefit from you using these services. These are just the easiest way to top up with $AR tokens.',\n gettingStartedTransak: 'Purchase AR using Transak',\n gettingStartedRamp: 'Purchase AR using the Ramp Network',\n gettingStartedHeading3: 'Step 3: Install DSocial Uploader App',\n gettingStartedPara7:\n \"To upload videos you'll need to install the <1>DSocial Uploader App\",\n gettingStartedHeading4: 'Step 3: Add your video to DSocial',\n gettingStartedPara8:\n 'Go back to the <1>upload page and upload your first video!',\n\n notFoundError: 'Возникла ошибка',\n notFoundTitle: 'Страница не найдена',\n notFoundContent:\n 'Эта страница не найдена.Вернитесь к <1>Главная страница',\n\n topTitle: 'Лучшие каналы',\n\n searchPlaceholder: 'Поиск видео...',\n\n sorting_recommended: 'Подписки',\n sorting_hot: 'Горячий',\n sorting_most_viewed: 'Наиболее просматриваемые',\n sorting_top_rated: 'Самые популярные',\n sorting_newest: 'Новейший',\n sorting_daily: 'Повседневная',\n sorting_weekly: 'Еженедельно',\n sorting_monthly: 'Ежемесячно',\n sorting_yearly: 'Ежегодно',\n sorting_all_time: 'Все время',\n\n feedbackSendFeedback: 'Отправить отзыв',\n feedbackCloseForm: 'Близкая форма',\n feedbackFeedbackType: 'Тип',\n feedbackName: 'Имя',\n feedback: 'Обратная связь',\n feedbackPlaceholder: 'Введите здесь свой отзыв...',\n feedbackSendFeedbackFormButton: 'Отправить отзыв 👋',\n feedbackFeedbackType_general: 'Общий',\n feedbackFeedbackType_bug: 'Ошибка',\n feedbackFeedbackType_idea: 'Идея',\n feedbackSubmitted: 'Благодарю вас!Отзыв',\n\n sideMenuHome: 'Дом',\n sideMenuUpload: 'Загрузить',\n sideMenuMyChannel: 'Мой канал',\n sideMenuLanguage: 'язык',\n sideMenuMyAccount: 'Мой счет',\n sideMenuLoginOrRegister: 'Авторизоваться',\n sideMenuOpen: 'Открытым',\n sideMenuClose: 'Закрывать',\n sideMenuReviewFlagged: 'Просмотрите флаг -контент',\n sideMenuLogout: 'Выйти',\n tipsLng: 'Советы и рекомендации',\n tipsContentLng:\n 'Эта функция появится в следующей версии. Эта функция появится в следующей версии.',\n}\n","export const TRANSLATIONS_VI = {\n homePageTitle:\n 'Kênh truyền thông xã hội phi tập trung dành cho tất cả mọi người',\n footer: 'Được phát triển bởi <1>@DSocialApp<1>',\n\n headerMyChannel: 'Kênh của tôi',\n headerUpload: 'Tải lên',\n headerMyAccount: 'Tài khoản của tôi',\n headerSignUpOrLogin: 'Đăng ký / Đăng nhập',\n\n accountErrorUserNameEmpty: 'Xin hãy nhập tên người dùng',\n accountErrorProfilePhotoFailed:\n 'Hình đại diện tải lên thất bại, Xin hãy thử lại sau',\n accountErrorUserNameAlreadyTaken:\n 'Tên người dùng đã được sử dụng, Xin hãy sử dụng một tên khác',\n accountError: 'Một lỗi đã xảy ra, Xin hãy thử lại',\n accountErrorValidImage: 'Vui lòng sử dụng các tệp JPG/PNG khả dụng',\n accountErrorFailedResize:\n 'Không thay đổi kích thước của ảnh được, vui lòng thử lại',\n accountPageTitle: 'Tài khoản của tôi',\n accountUpdated: 'Tài khoản của bạn đã được cập nhập',\n accountUserNameLabel: 'Tên người dùng',\n accountChannelNameLabel: 'Tên kênh',\n accountProfilePhotoLabel: 'Ảnh đại diện',\n accountResizingPhoto: 'Đang thay đổi kích thước ảnh...',\n accountDone: 'Hoàn tất',\n accountCancel: 'Hủy bỏ',\n accountLoadingPhoto: 'Đang tải ảnh...',\n accountChoosePhoto: 'Chọn ảnh',\n accountUploadingPhoto: 'Đang tải ảnh đại diện...',\n accountUpdatingAccountDetails: 'Đang cập nhập thông tin tài khoản...',\n accountUpdateAccountDetails: 'Cập nhập thông tin tài khoản',\n accountLogout: 'Đăng xuất',\n\n channelFailedToLoad: 'Tải thông tin kênh thất bại, vui lòng tải lại trang',\n channelFailedToLoadVideos: 'Tải video thất bại, vui lòng tải lại trang',\n subscribers: '{{number}} người đăng ký',\n subscribersK: '{{number}}K người đăng ký',\n subscribersM: '{{number}}M người đăng ký',\n subscribersNone: 'Chưa có người đăng ký',\n subscribe: 'Đăng ký',\n subscribed: 'Đã đăng ký',\n channelNoVideos: 'Chưa có video nào được tải lên.',\n\n views: '{{number}} lượt xem',\n viewsK: '{{number}}K lượt xem',\n viewsM: '{{number}}M lượt xem',\n viewsNone: 'Chưa có lượt xem nào',\n\n loginPageTitle: 'Đăng nhập/Đăng ký',\n loginIfNotRegistered: 'Nếu bạn chưa đăng ký tài khoản với DSocial:',\n loginSignUpButton: 'Đăng ký với Internet Identity',\n loginIfRegistered: 'Nếu bạn đã đăng ký tài khoản với DSocial:',\n loginButton: 'Đăng nhập với Internet Identity',\n\n uploadDropHere: 'Kéo thả ở đây...',\n uploadFailedResize:\n 'Không thay đổi kích thước của ảnh được, vui lòng thử lại',\n uploadErrorSelectThumbnail: 'Vui lòng tải ảnh bìa (JPG/PNG, 1280x720)',\n uploadErrorTransactionId: 'Vui lòng nhập video ID',\n uploadErrorVideoFile:\n 'Vui lòng chọn một video (chỉ khả dụng với MP4, tối đa 1080p)',\n uploadErrorFailedUpload: 'Không tải được ảnh bìa, vui lòng thử lại...',\n uploadErrorVideoFailedUpload: 'Không tải được video, vui lòng thử lại...',\n uploadPageTitle: 'Tải video của bạn',\n uploadInstallArConnect:\n 'Vui lòng cài đặt bộ mở rộng ArConnect Extension. Vui lòng đọc hướng dẫn tại mục <1>Bắt đầu.',\n uploadFirstTime:\n 'Nếu đây là lần đầu bạn tải video lên DSocial, Vui lòng đọc hướng dẫn tại mục <1>Bắt đầu.',\n uploadThumbnailUploaded: 'Ảnh bìa đã được tải lên',\n uploadThumbnailUploading:\n 'Ảnh bìa đang được tải lên, {{progress}}% hoàn thành...',\n uploadVideoUploaded: 'Video đã được tải lên',\n uploadVideoUploading: 'Video đang được tải lên, {{progress}}% hoàn thành...',\n uploadVideoCreated: 'Video đã được khởi tạo',\n uploadVideoCreating: 'Đang tạo hồ sơ video...',\n uploadSelectThumbnail: 'Chọn ảnh bìa:',\n uploadResizingPhoto: 'Đang thay đổi kích thước ảnh...',\n uploadDone: 'Hoàn tất',\n uploadCancel: 'Hủy',\n uploadDropLabel: 'Kéo thả ảnh bìa tại đây (kích thước lý tưởng 1280x720)...',\n uploadSelectThumbnailError: 'Vui lòng chọn các tệp JPG/PNG làm ảnh bìa',\n uploadYourVideoWith:\n 'Tải video lên với <1>App tải lên của DSocial, khi đã tải lên thành công, hãy sao chép mã video ID và dán vào bên dưới.',\n uploadSelectVideo: 'Chọn video (Chỉ khả dụng với MP4, tối đa 1080p):',\n uploadPlaceholderTransactionId: 'Dán mã video ID của bạn tại đây...',\n uploadDropVideo:\n 'Kéo thả video của bạn tại đây (Chỉ khả dụng với MP4, tối đa 1080p)...',\n uploadErrorDropVideo:\n 'Vui lòng chọn video (Chỉ khả dụng với MP4, tối đa 1080p)',\n uploadEnterTitle: 'Nhập tựa đề cho video:',\n uploadPlaceholderTitle: 'Nhập tựa đề cho video...',\n uploadEnterVideoDesc: 'Nhập mô tả cho video (tùy chọn):',\n uploadPlaceholderDesc: 'Nhập mô tả...',\n uploadButton: 'Tải lên',\n uploadFileTooBig: 'Tải lên video được giới hạn trong 2GB',\n\n video1Like: '1 lượt thích',\n videoLikes: '{{likes}} lượt thích',\n videoLike: 'Lượt thích',\n videoComments: '{{comments}} bình luận',\n videoAddPublicComment: 'Thêm một bình luận công khai...',\n videoCancelButton: 'Hủy',\n videoSubmitButton: 'Bình luận',\n\n notFoundError: 'Có lỗi xảy ra',\n notFoundTitle: 'Không tìm thấy trang',\n notFoundContent: 'Không tìm thấy trang này. Trở lại <1>Trang chủ.',\n\n topTitle: 'Các kênh hàng đầu',\n\n searchPlaceholder: 'Tìm kiếm video ...',\n\n sorting_recommended: 'Đăng ký',\n sorting_hot: 'Nóng',\n sorting_most_viewed: 'Xem nhiều nhất',\n sorting_top_rated: 'Xếp hạng hàng đầu',\n sorting_newest: 'Mới nhất',\n sorting_daily: 'Hằng ngày',\n sorting_weekly: 'Hàng tuần',\n sorting_monthly: 'Hàng tháng',\n sorting_yearly: 'Hàng năm',\n sorting_all_time: 'Tất cả thời gian',\n\n feedbackSendFeedback: 'Gửi phản hồi',\n feedbackCloseForm: 'Hình thức gần gũi',\n feedbackFeedbackType: 'Gõ phím',\n feedbackName: 'Tên',\n feedback: 'Phản hồi',\n feedbackPlaceholder: 'Nhập phản hồi của bạn vào đây...',\n feedbackSendFeedbackFormButton: 'Gửi phản hồi 👋',\n feedbackFeedbackType_general: 'Chung',\n feedbackFeedbackType_bug: 'Sâu bọ',\n feedbackFeedbackType_idea: 'Ý tưởng',\n feedbackSubmitted: 'Cảm ơn bạn!Phản hồi được gửi',\n\n sideMenuHome: 'Nhà',\n sideMenuUpload: 'Tải lên',\n sideMenuMyChannel: 'Kênh của tôi',\n sideMenuLanguage: 'Ngôn ngữ',\n sideMenuMyAccount: 'Tài khoản của tôi',\n sideMenuLoginOrRegister: 'Đăng nhập',\n sideMenuOpen: 'Mở',\n sideMenuClose: 'Đóng',\n sideMenuReviewFlagged: 'Xem lại nội dung được gắn cờ',\n sideMenuLogout: 'Đăng xuất',\n tipsLng: 'Những bí quyết',\n tipsContentLng:\n 'Tính năng này sẽ xuất hiện trong phiên bản tiếp theo. Tính năng này sẽ xuất hiện trong phiên bản tiếp theo.',\n}\n","export const TRANSLATIONS_HI = {\n homePageTitle: 'सभी के लिए विकेंद्रीकृत सोशल मीडिया',\n footer: 'निर्माता <1>@DSocialApp<1>',\n\n headerMyChannel: 'मेरा चैनल',\n headerUpload: 'अपलोड ',\n headerMyAccount: 'मेरा खाता',\n headerSignUpOrLogin: 'साइन अप करें/लॉग इन करें',\n\n accountErrorUserNameEmpty: 'कृपया एक नाम दर्ज करें',\n accountErrorProfilePhotoFailed:\n 'नई प्रोफ़ाइल फ़ोटो अपलोड करने में विफल, कृपया पुनः प्रयास करें',\n accountErrorUserNameAlreadyTaken:\n 'यह नाम पहले ही लिया जा चुका है, कृपया दूसरा प्रयास करें',\n accountError: 'कोई त्रुटि हुई, कृपया पुन: प्रयास करें',\n accountErrorValidImage: 'कृपया JPG/PNG फ़ाइल चुनें',\n accountErrorFailedResize:\n 'फ़ोटो का आकार बदलने में विफल, कृपया पुनः प्रयास करें',\n accountPageTitle: 'मेरा खाता',\n accountUpdated: 'आपका खाता अपडेट हो गया है',\n accountUserNameLabel: 'उपयोगकर्ता का नाम',\n accountChannelNameLabel: 'चैनल का नाम',\n accountProfilePhotoLabel: 'प्रोफाइल फोटो',\n accountResizingPhoto: 'फोटो का आकार बदलना...',\n accountDone: 'संपन्न हुआ',\n accountCancel: 'रद्द करे',\n accountLoadingPhoto: 'फोटो लोड हो रहा है...',\n accountChoosePhoto: 'फोटो चुनें',\n accountUploadingPhoto: 'प्रोफ़ाइल लोड फ़ोटो हो रहा है...',\n accountUpdatingAccountDetails: 'खाता विवरण अपडेट किया जा रहा है...',\n accountUpdateAccountDetails: 'खाता विवरण अपडेट करें',\n accountLogout: 'लॉग आउट करे',\n\n channelFailedToLoad:\n 'चैनल कि जानकारी लोड करने में विफल, कृपया पेज को रीफ्रेश करें',\n channelFailedToLoadVideos:\n 'वीडियो को लोड करने में विफल, कृपया पेज को रीफ्रेश करें',\n subscribers: '{{number}} सब्स्क्राइबर ',\n subscribersK: '{{number}} हज़ार सब्स्क्राइबर',\n subscribersM: '{{number}} लाख सब्स्क्राइबर',\n subscribersNone: 'कोई सब्स्क्राइबर नहीं',\n subscribe: 'सब्स्क्राइब करे',\n subscribed: 'सब्सक्राइब हो गया है',\n channelNoVideos: 'अभी तक कोई वीडियो अपलोड नहीं किया गया है',\n\n views: '{{number}} देखा गया',\n viewsK: '{{number}}हज़ार बार देखा गया',\n viewsM: '{{number}}लाख बार देखा गया',\n viewsNone: 'देखा गया',\n\n loginPageTitle: 'लॉग इन करें/रजिस्टर करें',\n loginIfNotRegistered: 'यदि आपने पहले DSocial के साथ रजिस्टर नहीं किया है:',\n loginSignUpButton: 'Internet Identity के साथ साइन अप करें ',\n loginIfRegistered: 'यदि आपने पहले DSocial के साथ रजिस्टर किया है:',\n loginButton: ' Internet Identity के साथ लॉग इन करें ',\n\n uploadDropHere: 'यहां छोड़ें...',\n uploadFailedResize: 'फ़ोटो का आकार बदलने में विफल, कृपया पुनः प्रयास करें',\n uploadErrorSelectThumbnail: 'कृपया एक थंबनेल चुनें (JPG/PNG, 1280x720)',\n uploadErrorTransactionId: 'कृपया वीडियो ID दर्ज करें',\n uploadErrorVideoFile: 'कृपया एक वीडियो चुनें (केवल MP4, अधिकतम 1080p)',\n uploadErrorFailedUpload:\n 'थंबनेल अपलोड करने में विफल, कृपया पुन: प्रयास करें...',\n uploadErrorVideoFailedUpload:\n 'वीडियो अपलोड करने में विफल, कृपया पुनः प्रयास करें...',\n uploadPageTitle: 'अपना वीडियो अपलोड करें',\n uploadInstallArConnect:\n 'कृपया पहले ArConnect एक्सटेंशन इंस्टॉल करें। यदि आपने पहले से नहीं किया है तो <1>GettingStarted मार्गदर्शिका का पालन करें।',\n uploadFirstTime:\n 'यदि आपने पहली बार DSocial पर अपलोड किया है, तो पहले यह <1>Getting Started मार्गदर्शिका पढ़ें',\n uploadThumbnailUploaded: 'थंबनेल अपलोड किया गया',\n uploadThumbnailUploading: 'थंबनेल अपलोड हो रहा है, {{progress}}% हो गया...',\n uploadVideoUploaded: 'वीडियो अपलोड किया गया',\n uploadVideoUploading: 'वीडियो अपलोड हो रहा है, {{progress}}% हो गया...',\n uploadVideoCreated: 'वीडियो बनाया गया',\n uploadVideoCreating: 'वीडियो रिकॉर्ड बन रहा है...',\n uploadSelectThumbnail: 'थंबनेल चुनें:',\n uploadResizingPhoto: 'फोटो का आकार बदले...',\n uploadDone: 'संपन्न हुआ',\n uploadCancel: 'रद्द करे',\n uploadDropLabel: 'अपना थंबनेल यहां छोड़ें (आदर्श रूप से 1280x720 .))...',\n uploadSelectThumbnailError: 'कृपया एक JPG/PNG थंबनेल चुनें',\n uploadYourVideoWith:\n 'अपना वीडियो <1>DSSocial Uploader App के साथ अपलोड करें, एक बार अपलोड हो जाने पर, वीडियो आईडी को कॉपी करें और नीचे पेस्ट करें.',\n uploadSelectVideo: 'वीडियो चुनें (केवल MP4, अधिकतम 1080p):',\n uploadPlaceholderTransactionId: 'अपनी वीडियो ID यहां पेस्ट करें...',\n uploadDropVideo: 'अपना वीडियो यहां छोड़ें (केवल MP4, अधिकतम 1080p)...',\n uploadErrorDropVideo: 'कृपया वीडियो चुनें (केवल MP4, अधिकतम 1080p)',\n uploadEnterTitle: 'वीडियो शीर्षक दर्ज करें:',\n uploadPlaceholderTitle: 'वीडियो शीर्षक दर्ज करें...',\n uploadEnterVideoDesc: 'वीडियो विवरण दर्ज करें (वैकल्पिक):',\n uploadPlaceholderDesc: 'विवरण दर्ज करें...',\n uploadButton: 'अपलोड करे',\n uploadFileTooBig: 'वीडियो अपलोड 2GB एमबी तक सीमित हैं',\n\n video1Like: '1 पसंद किया गया',\n videoLikes: '{{likes}} पसंद किया गया',\n videoLike: 'पसंद किया गया',\n videoComments: '{{comments}} कमेंट',\n videoAddPublicComment: 'सार्वजनिक कमेंट करें ...',\n videoCancelButton: 'रद्द करे',\n videoSubmitButton: 'कमेंट',\n\n notFoundError: 'कोई त्रुटि हुई',\n notFoundTitle: 'पेज हटाया गया',\n notFoundContent: 'यह पेज नहीं मिला है। <1>homepage पर वापस जाएं.',\n\n topTitle: 'शीर्ष चैनल',\n\n searchPlaceholder: 'वीडियो खोजें...',\n\n sorting_recommended: 'सदस्यता',\n sorting_hot: 'गर्म',\n sorting_most_viewed: 'सबसे ज्यादा देखा गया',\n sorting_top_rated: 'टॉप रेटेड',\n sorting_newest: 'नवीनतम',\n sorting_daily: 'दैनिक',\n sorting_weekly: 'साप्ताहिक',\n sorting_monthly: 'महीने के',\n sorting_yearly: 'सालाना',\n sorting_all_time: 'पूरा समय',\n\n feedbackSendFeedback: 'प्रतिक्रिया भेजें',\n feedbackCloseForm: 'बंद रूप',\n feedbackFeedbackType: 'प्रकार',\n feedbackName: 'नाम',\n feedback: 'प्रतिपुष्टि',\n feedbackPlaceholder: 'यहां अपनी प्रतिक्रिया दर्ज करें...',\n feedbackSendFeedbackFormButton: 'प्रतिक्रिया भेजें 👋',\n feedbackFeedbackType_general: 'आम',\n feedbackFeedbackType_bug: 'तंग करना',\n feedbackFeedbackType_idea: 'विचार',\n feedbackSubmitted: 'शुक्रिया!फीडबैक प्रस्तुत किया गया',\n\n sideMenuHome: 'घर',\n sideMenuUpload: 'डालना',\n sideMenuMyChannel: 'मेरा चैनल',\n sideMenuLanguage: 'भाषा',\n sideMenuMyAccount: 'मेरा खाता',\n sideMenuLoginOrRegister: 'लॉग इन करें',\n sideMenuOpen: 'खुला',\n sideMenuClose: 'बंद करे',\n sideMenuReviewFlagged: 'ध्वजांकित सामग्री की समीक्षा करें',\n sideMenuLogout: 'लॉग आउट करे',\n tipsLng: 'नुस्ख़े',\n tipsContentLng:\n 'यह सुविधा अगले संस्करण में आ जाएगी।。यह सुविधा अगले संस्करण में आ जाएगी।',\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabs\":\"Tabs_tabs__mNPqW\",\"tab\":\"Tabs_tab__28Mkm\",\"selected\":\"Tabs_selected__r_pj1\",\"spacer\":\"Tabs_spacer__1jVQK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"users\":\"ThankYou_users__78tiB\",\"user\":\"ThankYou_user__12ZyC\",\"profilePlaceholder\":\"ThankYou_profilePlaceholder__hTZJC\",\"verified\":\"ThankYou_verified__1_Adn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"uploadForm\":\"EditVideo_uploadForm__2x-v5\",\"dropper\":\"EditVideo_dropper__F-cyn\",\"active\":\"EditVideo_active__2GxiU\",\"progress\":\"EditVideo_progress__1-zaT\",\"infoBox\":\"EditVideo_infoBox__3kpZ3\",\"cropper\":\"EditVideo_cropper__2xpoY\",\"cropperContainer\":\"EditVideo_cropperContainer__kP2yo\",\"cropperButtons\":\"EditVideo_cropperButtons__k_Xlt\",\"picked\":\"EditVideo_picked__ESEDH\",\"croppedImage\":\"EditVideo_croppedImage__3u5hu\"};","import { useEffect, useState } from 'react'\nimport { ColorScheme } from '../types'\n\nconst stored = window ? window.localStorage.getItem('colorScheme') : ''\nconst defaultColorScheme =\n stored !== null && typeof stored !== 'undefined' ? parseInt(stored, 10) : 1\n\nexport const useColorScheme = (): ColorScheme => {\n const cs = defaultColorScheme as ColorScheme\n const [colorScheme, setColorScheme] = useState(cs)\n\n useEffect(() => {\n const handleChange = (e: MediaQueryListEvent) => {\n const newColorScheme = e.matches ? ColorScheme.Dark : ColorScheme.Light\n setColorScheme(newColorScheme)\n }\n if (window.matchMedia) {\n const mediaWatch = window.matchMedia('(prefers-color-scheme: dark)')\n const value = mediaWatch.matches ? ColorScheme.Dark : ColorScheme.Light\n window.localStorage.setItem('colorScheme', value.toString())\n setColorScheme(value)\n\n mediaWatch.addEventListener('change', handleChange)\n\n return () => {\n mediaWatch.removeEventListener('change', handleChange)\n }\n }\n\n return () => {\n console.log('window.matchMedia not supported')\n }\n }, [])\n\n return colorScheme\n}\n","import React, { useState, useEffect } from 'react'\nimport { useHistory, Link } from 'react-router-dom'\nimport styles from './MenuItems.module.scss'\n\nimport pages, { generateUrl } from '../../pages'\n\ninterface MenuItem {\n name: string\n id: string | number\n icon: string\n url: string\n}\n\nconst MENU_ITEMS: MenuItem[] = [\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687162925672_Home.svg',\n url: '/',\n name: 'Home',\n id: 1,\n },\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687162925674_Shorts.svg',\n url: '-1',\n name: 'Shorts',\n id: 2,\n },\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687162925663_Subscriptions.svg',\n url: '/?s=recommended&t=weekly',\n name: 'Subscriptions',\n id: 3,\n },\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687162925673_Messages.svg',\n url: '-2',\n name: 'Messages',\n id: 4,\n },\n]\n\nconst MenuItems = (props: any) => {\n const history = useHistory()\n\n const [currentUrl, setCurrentUrl] = useState(null)\n\n useEffect(() => {\n const { pathname, search } = window.location\n let url: string | null = null\n if (pathname === '/' && search === '?s=recommended&t=all_time') {\n url = `${pathname}${search}`\n } else {\n url = pathname\n }\n setCurrentUrl(url)\n // get_information()\n }, [])\n\n // 跳转路由\n const go_to = (item: MenuItem) => {\n setCurrentUrl(item.url)\n if (item.url && item.url !== '-1' && item.url !== '-2') {\n history.push(item.url)\n if (props && props.from && props.from === 'Header') {\n props.hide()\n }\n return false\n }\n if (item.url === '-1' || item.url === '-2') {\n props.showTips()\n return false\n }\n }\n\n return (\n
    \n {MENU_ITEMS.map((item: any) => {\n return (\n go_to(item)}\n >\n \"\"\n {item.name}\n \n )\n })}\n
\n )\n}\n\nexport default MenuItems\n","import React, { useState, useEffect } from 'react'\nimport { useHistory, Link } from 'react-router-dom'\nimport styles from './SideMenu.module.scss'\nimport { getBackend } from '../../lib/icp'\nimport MenuItems from '../menuItems'\n\nimport pages, { generateUrl } from '../../pages'\n\ninterface IFocus {\n userName: string\n id: string\n imgUrl: string\n [propName: string]: string | any\n}\n\nconst SideMenu = (props: any) => {\n const history = useHistory()\n\n const [currentUrl, setCurrentUrl] = useState(null)\n const [focusUser, setFocusUser] = useState([])\n\n const get_information = async () => {\n // const backend = await getBackend()\n // const user_list = await backend.getSubscriptionsUser()\n // setFocusUser(user_list)\n }\n\n const showTips = () => {\n props.showTips()\n }\n\n return (\n <>\n
\n \n
\n {focusUser && focusUser.length > 0 && (\n

Following

\n )}\n
    \n {focusUser &&\n focusUser.length > 0 &&\n focusUser.map((item: any) => {\n return (\n
  • \n \n \"\"\n \n\n
    \n {item.userName}\n
    \n
  • \n )\n })}\n
\n {focusUser && focusUser.length > 6 && (\n
\n
\n
Show more
\n
\n )}\n
\n
\n
\n \n )\n}\n\nexport default SideMenu\n","import { ChangeEvent, FormEvent, useState, useEffect } from 'react'\nimport { IoArrowUpCircleOutline, IoFlameSharp } from 'react-icons/io5'\nimport { BiSearch } from 'react-icons/bi'\nimport { Link, useHistory } from 'react-router-dom'\n\nimport { useTranslation, useUser } from '../../hooks'\nimport generateProfilePhotoUrl from '../../lib/profilePhoto'\nimport pages, { generateUrl } from '../../pages'\nimport { changeLanguage, languages } from '../../translations/i18n'\nimport Button from '../Button'\nimport CachedImage from '../CachedImage'\nimport MenuItems from '../menuItems'\nimport Logo from '../Logo'\nimport SideMenu from '../SideMenu'\n\nimport styles from './Header.module.scss'\n\nconst Search = (props: any) => {\n const { t } = useTranslation()\n const params = new URLSearchParams(window.location.search)\n const [query, setQuery] = useState(params.get('q') || '')\n const [focussed, setFocussed] = useState(false)\n const history = useHistory()\n\n const onSubmit = (e: FormEvent) => {\n e.preventDefault()\n\n if (!query || !query.trim()) return\n\n history.push(`${pages.search.path}?q=${encodeURIComponent(query)}`)\n }\n\n const onBlur = () => setFocussed(false)\n const onFocus = () => setFocussed(true)\n\n const onChange = (e: ChangeEvent) => {\n setQuery(e.target.value)\n }\n\n const click_search = () => {\n if (props && props.from === 'phone_search') {\n props.hidePhoneSearch()\n }\n }\n\n return (\n \n \n \n )\n}\n\nconst Header = (props: any) => {\n const { t } = useTranslation()\n const { loading, userData, loggedIn } = useUser()\n const [chooseLanguage, setChooseLanguage] = useState('English')\n const [showSearch, setShowSearch] = useState(false)\n const channelPath =\n loggedIn && userData?.userName\n ? generateUrl(pages.channel.path, { userName: userData?.userName })\n : ''\n\n const [showPhoneSideMenu, setShowPhoneSideMenu] = useState(false)\n\n useEffect(() => {\n const acquiesceLng = window.localStorage.i18nextLng\n\n languages.forEach((item) => {\n if (item[0] == acquiesceLng) {\n setChooseLanguage(item[2])\n }\n })\n // init_user()\n }, [])\n\n // 多语言切换\n const click_multilingual = (item: string[]) => {\n setChooseLanguage(item[2])\n changeLanguage(item[0])\n }\n\n const go_login = () => {\n props.toLogin()\n }\n\n const showTips = () => {\n props.showTips()\n setShowPhoneSideMenu(false)\n document.body.style.removeProperty('overflow')\n }\n const showHide = () => {\n setShowPhoneSideMenu(false)\n document.body.style.removeProperty('overflow')\n }\n\n const getSearchInfo = () => {\n setShowSearch(false)\n }\n\n return (\n <>\n {/* pc */}\n
\n
\n {/* */}\n \n \n
\n {!loading && (\n
\n
\n \n
\n
    \n {languages.map((item) => {\n return (\n click_multilingual(item)}\n >\n {item[2]}\n \n )\n })}\n
\n
\n
\n\n {loggedIn ? (\n
\n \n \n upload\n \n \n {/* \n \n */}\n
\n ) : (\n //
\n // \n //
\n
go_login()}>\n {t('headerSignUpOrLogin')}\n
\n )}\n
\n )}\n
\n {/* 手机端 */}\n {!showSearch && (\n
\n {\n setShowPhoneSideMenu(true)\n document.body.style.setProperty('overflow', 'hidden')\n }}\n className={styles.header_phone_img}\n src=\"https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1688116871974_Frame.svg\"\n alt=\"\"\n />\n \n
\n {\n setShowSearch(true)\n }}\n src=\"https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1688351795947_Group 634698.png\"\n alt=\"\"\n />\n
\n \n
\n
    \n {languages.map((item) => {\n return (\n click_multilingual(item)}\n >\n {item[2]}\n \n )\n })}\n
\n
\n
\n {loggedIn ? (\n
\n \n \n \n \n
\n ) : (\n
\n \n
\n //
go_login()}>\n // {t('headerSignUpOrLogin')}\n //
\n )}\n
\n
\n )}\n {/* 搜索栏 */}\n {showSearch && (\n
\n {\n setShowSearch(false)\n }}\n src=\"https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1688375942768_Frame.png\"\n alt=\"\"\n />\n \n
\n )}\n\n {/* 侧边导航栏 */}\n {showPhoneSideMenu && (\n
\n
\n
\n {\n setShowPhoneSideMenu(false)\n document.body.style.removeProperty('overflow')\n }}\n className={styles.header_phone_img}\n src=\"https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1688116871974_Frame.svg\"\n alt=\"\"\n />\n \n
\n \n
\n
\n )}\n {/*
*/}\n \n )\n}\n\nexport default Header\n","import { ReactNode, useState } from 'react'\nimport { Helmet } from 'react-helmet'\nimport { Trans } from 'react-i18next'\nimport { useHistory } from 'react-router-dom'\n\nimport SideMenu from '../SideMenu'\nimport { useTranslation } from '../../hooks'\nimport { login } from '../../lib/icp'\nimport pages from '../../pages'\nimport { Button } from '../../components'\n\nimport Header from '../Header'\nimport { changeLanguage, languages } from '../../translations/i18n'\nimport pkg from '../../../package.json'\n\nimport styles from './Page.module.scss'\n\nconst year = new Date().getFullYear()\n\n// type MaybeUser = User | null | undefined\ninterface MenuItem {\n icon: string\n url?: string\n name: string\n id: string | number\n // shouldShow?: (\n // userData?: MaybeUser,\n // userPermissions?: UserPermission[],\n // ) => boolean | undefined\n}\n\nconst MENU_ITEMS: MenuItem[] = [\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687162925672_Home.svg',\n url: '/',\n name: 'Home',\n id: 1,\n },\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687162925674_Shorts.svg',\n url: '',\n name: 'Shorts',\n id: 2,\n },\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687162925663_Subscriptions.svg',\n url: '/?s=recommended&t=weekly',\n name: 'subscriptions',\n id: 3,\n },\n {\n icon: 'https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687162925673_Messages.svg',\n url: '',\n name: 'messages',\n id: 4,\n },\n]\n\n// const history = useHistory()\n// const [current]\n\nconst Page = ({\n title,\n children,\n disableFooter,\n center,\n className,\n}: PageProps) => {\n const [showModal, setShowModal] = useState(false)\n\n const [loginModal, setLoginModal] = useState(false)\n\n const { t } = useTranslation()\n const closeModal = () => {\n setShowModal(false)\n document.body.style.removeProperty('overflow')\n }\n const showTips = () => {\n setShowModal(true)\n document.body.style.setProperty('overflow', 'hidden')\n }\n // 登录\n const click_login = () => {\n setLoginModal(true)\n }\n\n const closeLoginModal = () => {\n setLoginModal(false)\n }\n\n const history = useHistory()\n\n const signUp = () => {\n login(() => {\n history.push(pages.account.path)\n })\n }\n return (\n <>\n \n {title}\n \n \n \n \n
\n
\n
\n
\n \n
\n
{children}
\n
\n {/* {!disableFooter && (\n
\n

\n © {year} DSocial (v{pkg.version}) |{' '}\n \n Built by\n \n @ashappdev\n \n .\n \n

\n\n
\n {languages.map(([code, emoji, desc]) => (\n changeLanguage(code)}\n >\n {emoji}\n \n ))}\n
\n
\n )} */}\n
\n {/* tips */}\n {showModal && (\n
\n
    \n
  • \n
    {t('tipsLng')}
    \n closeModal()}\n className={styles.tips_box_head_img}\n src=\"https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687661633061_Vector.svg\"\n alt=\"\"\n />\n
  • \n
  • \n \n
  • \n
  • {t('tipsContentLng')}
  • \n
\n
\n )}\n {/* login */}\n {loginModal && (\n
\n
\n
\n \n closeLoginModal()}\n className={styles.login_box_head_right}\n src=\"https://yumi-frontend-assets.s3.ap-east-1.amazonaws.com/yumi/unity/1687661633061_Vector.svg\"\n alt=\"\"\n />\n
\n

{t('loginPageTitle')}

\n
    \n
  • \n {t('loginIfNotRegistered')}\n
  • \n \n \n {/* {t('loginSignUpButton')} */}\n \n
  • \n {t('loginIfRegistered')}\n
  • \n
  • \n {/* {t('loginButton')} */}\n \n
  • \n
\n
\n © {year} DSocial (v{pkg.version}) |{' '}\n \n Built by\n \n @ashappdev\n \n .\n \n
\n
\n
\n )}\n \n )\n}\n\ninterface PageProps {\n title?: string\n children: ReactNode\n disableFooter?: boolean\n center?: boolean\n className?: string\n}\n\nexport default Page\n","import { createContext, ReactNode, useEffect, useState } from 'react'\nimport {\n isAuthenticated,\n addAuthChangedListener,\n removeAuthChangedListener,\n} from '../../lib/icp'\nimport { UserPermission } from '../../types'\nimport { User } from '../../types/backend/dsocial/dsocial.did'\n\nconst initialValue: IUserContext = {\n loggedIn: false,\n loading: false,\n userData: null,\n principal: null,\n userPermissions: [],\n}\n\nexport const UserContext = createContext(initialValue)\n\nexport const UserProvider = ({ children }: UserProviderProps) => {\n const [loading, setLoading] = useState(true)\n const [loggedIn, setLoggedIn] = useState(false)\n const [currentUserData, setUserData] = useState(null)\n const [currentUserPermissions, setUserPermissions] = useState<\n UserPermission[]\n >([])\n const [principal, setPrincipal] = useState(null)\n\n useEffect(() => {\n isAuthenticated().then(\n ({\n userData,\n isLoggedIn: isAuthenticatedResult,\n userPermissions,\n principal,\n }) => {\n setLoggedIn(!!isAuthenticatedResult)\n setUserPermissions(userPermissions)\n setUserData(userData)\n setPrincipal(principal?.toString())\n setLoading(false)\n },\n )\n\n const authWatcher = (\n updateIsLoggedIn: boolean,\n newUserData?: User | null,\n ) => {\n // window.alert(JSON.stringify(newUserData))\n setLoggedIn(updateIsLoggedIn)\n setUserData(newUserData)\n setLoading(false)\n }\n\n addAuthChangedListener(authWatcher)\n\n return () => {\n removeAuthChangedListener(authWatcher)\n }\n }, [])\n\n const value: IUserContext = {\n loggedIn,\n loading,\n userData: currentUserData,\n principal: principal,\n userPermissions: currentUserPermissions,\n }\n\n return {children}\n}\n\ninterface IUserContext {\n loggedIn: boolean\n loading: boolean\n userData?: User | null\n principal: any\n userPermissions: UserPermission[]\n}\n\ninterface UserProviderProps {\n children: ReactNode\n}\n","import { AR_WEAVE_HOST, ASSET_BASE_URL, CS_CDN, AR_CDN } from '../config'\nimport { Video } from '../types/backend/dsocial/dsocial.did'\n\nconst generateVideoUrl = (video: Video) => {\n if (video.hash && video.hash.startsWith('http')) {\n return video.hash.replace(CS_CDN.before, CS_CDN.after)\n }\n\n // if (video.assets.length > 2) {\n // const icVideo = video.assets.find(r => r.category === 'icv')\n // if (icVideo) {\n // return icVideo.url //.replace('5xecn-dyaaa-aaaal-qbdcq-cai.raw.ic0.app', 'dsocialic.b-cdn.net')\n // }\n // }\n\n if (video.hash === 'ar' && video.assets.length > 0) {\n const vid = video.assets.find(r => r.category === 'hls')\n if (vid) {\n return `${AR_WEAVE_HOST}${vid.url}`\n }\n }\n\n return `${ASSET_BASE_URL}${video.hash}`\n}\n\nexport default generateVideoUrl\n","import { getBackend } from './icp'\nimport getDt from './dt'\nimport { IS_LOCAL } from '../config'\n\nconst trackClick = async (videoId: string) => {\n if (IS_LOCAL) return\n const start = Date.now()\n console.log(`trackClick for ${videoId}`)\n\n try {\n const backend = await getBackend()\n const caller = await backend.getCallerInfo()\n const res = await backend.incrementClicks(\n videoId,\n caller.isAnonymous(),\n getDt(),\n )\n console.log(`incrementClicks took ${Date.now() - start}ms`, res)\n } catch (e) {\n console.warn('incrementClicks failed', e)\n }\n}\n\nexport default trackClick\n","const durationCache: { [key: number]: string } = {}\n\nconst convertDuration = (duration: number) => {\n if (!durationCache[duration]) {\n let friendlyDuration = new Date(duration * 1000)\n .toISOString()\n .substring(11, 19)\n if (friendlyDuration.startsWith('00:00:')) {\n friendlyDuration = friendlyDuration.substring(3, 8)\n } else if (friendlyDuration.startsWith('00:')) {\n friendlyDuration = friendlyDuration.substring(3)\n }\n durationCache[duration] = friendlyDuration\n }\n\n return durationCache[duration]\n}\n\nexport default convertDuration\n","import React, { useEffect } from 'react'\nimport Hls from 'hls.js'\nimport useMobileDetect from 'use-mobile-detect-hook'\n\ninterface HlsSourceProps {\n src: string\n video?: HTMLVideoElement\n autoPlay?: boolean\n}\n\nconst HlsSource = ({ src, video, autoPlay }: HlsSourceProps) => {\n const detectMobile = useMobileDetect()\n useEffect(() => {\n const hls = new Hls({\n xhrSetup: (xhr, url) => {\n const parts = url.split('/')\n const txId = parts[parts.length - 1]\n const splitter = 'arweave.net/'\n\n if (url.indexOf(splitter) !== -1 && parts.length >= 5) {\n const baseUrl = `${url.split(splitter)[0]}${splitter}`\n const newUrl = `${baseUrl}${txId}`\n console.log('url', url)\n console.log('newUrl', newUrl)\n xhr.open('GET', newUrl, true)\n }\n },\n })\n\n if (Hls.isSupported() && video) {\n hls.loadSource(src)\n hls.attachMedia(video!)\n hls.on(Hls.Events.MANIFEST_PARSED, () => {\n if (!detectMobile.isMobile() && autoPlay) {\n video!.play()\n }\n })\n }\n\n return () => hls.destroy()\n }, [])\n\n return (\n \n )\n}\n\nexport default HlsSource\n","import { ReactNode, useState } from 'react'\nimport { useInViewEffect } from 'react-hook-inview'\nimport { IS_LOCAL } from '../../config'\n\nimport getDt from '../../lib/dt'\nimport { getBackend } from '../../lib/icp'\n\nconst trackCount: { [videoId: string]: number } = {}\n\nconst trackImpression = async (videoId: string) => {\n if (IS_LOCAL) return\n const start = Date.now()\n trackCount[videoId] = trackCount[videoId] || 0\n trackCount[videoId] += 1\n console.log(`tracking impression for ${videoId}`, trackCount[videoId])\n\n try {\n const backend = await getBackend()\n const caller = await backend.getCallerInfo()\n const res = await backend.incrementImpressions(\n videoId,\n caller.isAnonymous(),\n getDt(),\n )\n console.log(`incrementImpressions took ${Date.now() - start}ms`)\n } catch (e) {\n console.warn('incrementImpressions failed', e)\n }\n}\n\ninterface TrackImpressionProps {\n videoId: string\n children: ReactNode\n className?: string\n style?: any\n}\n\nconst TrackImpression = ({\n videoId,\n children,\n className,\n style,\n}: TrackImpressionProps) => {\n const [lastTrack, setLastTrack] = useState(0)\n const [trackTimeout, setTrackTimeout] = useState()\n const ref = useInViewEffect(\n ([entry]) => {\n if (entry.isIntersecting) {\n // console.log(`TrackImpression, videoId: ${videoId}: IN VIEW`)\n if (\n !trackTimeout &&\n (lastTrack === 0 || lastTrack < Date.now() - 10000)\n ) {\n // console.log(`TrackImpression, videoId: ${videoId}: QUEUING TRACKING`)\n const cb = setTimeout(() => {\n trackImpression(videoId)\n setTrackTimeout(null)\n }, 1000)\n setTrackTimeout(cb)\n setLastTrack(Date.now())\n }\n } else {\n if (trackTimeout) {\n // console.log(`TrackImpression, videoId: ${videoId}: CLEARING TRACKING TIMEOUT`)\n clearTimeout(trackTimeout)\n }\n }\n },\n { threshold: 0.5 },\n [lastTrack, trackTimeout],\n )\n\n return (\n
\n {children}\n
\n )\n}\n\nexport default TrackImpression\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videos\":\"Home_videos__3jD_h\",\"content\":\"Home_content__OGPl9\",\"approvalMode\":\"Home_approvalMode__M-wt2\"};","export enum Theme {\n Dark,\n Light,\n}\n","export enum ColorScheme {\n Dark,\n Light,\n}\n","export enum UserPermission {\n Owner = 'owner',\n Admin = 'admin',\n Moderator = 'moderator',\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"spacer\":\"Header_spacer__mTxtb\",\"header\":\"Header_header__1v0yI\",\"myChannel\":\"Header_myChannel__3fvyb\",\"upload\":\"Header_upload__jEJUU\",\"left\":\"Header_left__1k2WD\",\"right\":\"Header_right__3m7KF\",\"loggedIn\":\"Header_loggedIn__2dPTn\",\"upload_link\":\"Header_upload_link__3h2uZ\",\"upload_img\":\"Header_upload_img__2Yhvz\",\"loggedOut\":\"Header_loggedOut__aMmir\",\"right_lng\":\"Header_right_lng__o7Jja\",\"right_lng_img\":\"Header_right_lng_img__1Ecyb\",\"languages_box_wrap\":\"Header_languages_box_wrap__S5nNT\",\"search\":\"Header_search__1tOhw\",\"focus\":\"Header_focus__3uYdd\",\"phone_img\":\"Header_phone_img__MFWef\",\"header_phone\":\"Header_header_phone__3C60T\",\"header_phone_img\":\"Header_header_phone_img__2zXuk\",\"common_img\":\"Header_common_img__1PMbd\",\"header_phone_right\":\"Header_header_phone_right__2jo15\",\"right_lng_phone\":\"Header_right_lng_phone__1EjAE\",\"right_lng_phone_img\":\"Header_right_lng_phone_img__3Fgn4\",\"header_search_wrap\":\"Header_header_search_wrap__1fduo\",\"header_back\":\"Header_header_back__1Y-p3\",\"languages_box_hover\":\"Header_languages_box_hover__3G8mT\",\"select_li\":\"Header_select_li__3PKrL\",\"phone_side_menu\":\"Header_phone_side_menu__3VuXJ\",\"phone_side_menu_box\":\"Header_phone_side_menu_box__wFdV2\",\"phone_side_menu_head\":\"Header_phone_side_menu_head__2OGlB\",\"account\":\"Header_account__2Gu-X\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Loading_container__3DxKb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content_wrap_sidebar_head\":\"MenuItems_content_wrap_sidebar_head__3uzG-\",\"selected\":\"MenuItems_selected__33Hij\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"form\":\"Monetisation_form__1sl_B\",\"buttons\":\"Monetisation_buttons__3L6nR\",\"cropper\":\"Monetisation_cropper__2Jyph\",\"cropperContainer\":\"Monetisation_cropperContainer__1V8WM\",\"cropperButtons\":\"Monetisation_cropperButtons__2PrV9\",\"profilePhoto\":\"Monetisation_profilePhoto__2fSOT\",\"disabled\":\"Monetisation_disabled__3Hmrf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sub\":\"PaidSubscriptions_sub__UzEDB\",\"paidSubs\":\"PaidSubscriptions_paidSubs__1cR-p\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"logoWrapper\":\"Logo_logoWrapper__1_1-y\",\"logo\":\"Logo_logo__3IG6m\",\"text\":\"Logo_text__2tII4\",\"logo_phone\":\"Logo_logo_phone__3nMrj\"};","export enum Tags {\n Reviewed = 'reviewed',\n Nsfw = 'nsfw',\n CopyrightedContent = 'copyrighted-content',\n Illegal = 'illegal',\n Approved = 'approved',\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"uploadForm\":\"Upload_uploadForm__14LnL\",\"upload_svg_img\":\"Upload_upload_svg_img__Gl2pJ\",\"thumb_first_title\":\"Upload_thumb_first_title__b3R9z\",\"title_title\":\"Upload_title_title__2AV3g\",\"desc_title\":\"Upload_desc_title__prOFZ\",\"common_input\":\"Upload_common_input__3AngG\",\"upload_submit\":\"Upload_upload_submit__258qe\",\"dropper\":\"Upload_dropper__1HVTn\",\"svg_box\":\"Upload_svg_box__qh6Z5\",\"active\":\"Upload_active__3rwvy\",\"upload_title\":\"Upload_upload_title__2nbr4\",\"progress\":\"Upload_progress__3Zkek\",\"infoBox\":\"Upload_infoBox__T5uX_\",\"cropper\":\"Upload_cropper__1Q709\",\"cropperContainer\":\"Upload_cropperContainer__3gqH9\",\"reactEasyCrop_CropArea\":\"Upload_reactEasyCrop_CropArea__17C8K\",\"cropperButtons\":\"Upload_cropperButtons__1tOBs\",\"cropperButtons_done\":\"Upload_cropperButtons_done__2rPXK\",\"cropperButtons_cancel\":\"Upload_cropperButtons_cancel__23lxs\",\"picked\":\"Upload_picked__2UkJB\",\"croppedImage\":\"Upload_croppedImage__13HBm\",\"picked_thumbnailBuffer\":\"Upload_picked_thumbnailBuffer__2yzfR\"};","export default ['2', '4624']\n","export enum SortBy {\n // Recommended = 'recommended',\n Hot = 'hot',\n // MostViewed = 'most_viewed',\n // TopRated = 'top_rated',\n Newest = 'newest',\n}\n\nexport enum TimeRange {\n Daily = 'daily',\n Weekly = 'weekly',\n Monthly = 'monthly',\n Yearly = 'yearly',\n AllTime = 'all_time',\n}\n","import { ReactNode, useState, useEffect } from 'react'\nimport {\n IoFlashSharp,\n // IoHeartSharp,\n IoLeafSharp,\n // IoSparklesSharp,\n // IoStatsChartSharp,\n} from 'react-icons/io5'\nimport cn from 'classnames'\n\nimport { Link } from 'react-router-dom'\n\nimport { getBackend } from '../../lib/icp'\n\nimport { Button } from '../../components'\nimport { useTranslation, useUser } from '../../hooks'\nimport { SortBy, TimeRange } from './enums'\n\nimport pages, { generateUrl } from '../../pages'\n\nimport styles from './Sorting.module.scss'\n\nconst SORT_LIST = Object.values(SortBy)\n\nconst TIME_RANGE_LIST = Object.values(TimeRange)\n\nconst SORT_ICONS = {\n // [SortBy.Recommended]: IoSparklesSharp,\n [SortBy.Hot]: IoFlashSharp,\n // [SortBy.MostViewed]: IoStatsChartSharp,\n // [SortBy.TopRated]: IoHeartSharp,\n [SortBy.Newest]: IoLeafSharp,\n}\n\ninterface SortingProps {\n sortBy: SortBy\n timeRange: TimeRange\n onChange: (sortBy: SortBy, timeRange: TimeRange) => void\n}\n\nconst List = ({ children }: { children: ReactNode }) => (\n
{children}
\n)\n\nconst renderIcon = (sortBy: SortBy) => {\n const IconComponent = SORT_ICONS[sortBy]\n return \n}\n\nconst Sorting = ({ onChange, sortBy, timeRange }: SortingProps) => {\n const { loggedIn } = useUser()\n const [isSubs, setIsSubs] = useState(false)\n const { t } = useTranslation()\n const { pathname, search } = window.location\n const [focusUser, setFocusUser] = useState([])\n\n // useEffect(() => {\n // if (pathname === '/' && search === '?s=recommended&t=weekly') {\n // setIsSubs(true)\n // } else {\n // setIsSubs(false)\n // }\n // }, [search])\n\n // 获取关注列表\n const get_information = async () => {\n // const backend = await getBackend()\n // const user_list = await backend.getSubscriptionsUser()\n // setFocusUser(user_list)\n }\n return (\n
\n {/* 正常首页 */}\n {!isSubs && (\n
    \n {SORT_LIST.map((sortById) => {\n return (\n onChange(sortById, timeRange)}\n >\n {t(`sorting_${sortById}`)}\n \n )\n })}\n
\n )}\n {!isSubs && (\n
    \n {TIME_RANGE_LIST.map((timeRangeId) => (\n onChange(sortBy, timeRangeId)}\n >\n {t(`sorting_${timeRangeId}`)}\n \n ))}\n
\n )}\n {/* Your subscriptions */}\n {isSubs && (\n
\n {focusUser && focusUser.length > 0 && (\n

Your subscriptions

\n )}\n
\n
\n {focusUser &&\n focusUser.length > 0 &&\n focusUser.map((item: any) => {\n return (\n
    \n
  • \n \n \"\"\n \n
  • \n
  • \n {item.userName}\n
  • \n \n
\n )\n })}\n
\n
\n Manage Subs\n
\n
\n
\n )}\n
\n\n //
\n // \n // {SORT_LIST.map((sortById) =>\n // sortById !== SortBy.Recommended || loggedIn ? (\n // onChange(sortById, timeRange)}\n // icon={renderIcon(sortById)}\n // >\n // {t(`sorting_${sortById}`)}\n // \n // ) : null,\n // )}\n // \n\n // {sortBy !== SortBy.Newest && sortBy !== SortBy.Recommended && (\n // \n // {TIME_RANGE_LIST.map((timeRangeId) => (\n // onChange(sortBy, timeRangeId)}\n // >\n // {t(`sorting_${timeRangeId}`)}\n // \n // ))}\n // \n // )}\n //
\n )\n}\n\nexport default Sorting\n","import { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport moment, { Moment } from 'moment'\nimport InfiniteScroll from 'react-infinite-scroll-component'\n\nimport { Loading, Page, VideoBoxHome } from '../../components'\nimport pages from '../../pages'\nimport { useUser, useTranslation } from '../../hooks'\nimport { getBackend } from '../../lib/icp'\nimport { VideoAndUser } from '../../types/backend/dsocial/dsocial.did'\n\nimport styles from './Home.module.scss'\nimport { Tags } from '../../config/tags'\nimport moderators from '../../config/moderators'\nimport { SortBy, TimeRange } from './enums'\nimport Sorting from './Sorting'\n\nconst paramSupport = !!window.URLSearchParams\n\nconst convertMomentToBigInt = (mo: Moment) => BigInt(mo.valueOf() * 1000000)\nconst getFromDate = (newTimeRange: TimeRange) => {\n let mo = moment()\n switch (newTimeRange) {\n case TimeRange.Daily:\n mo = mo.subtract(24, 'hours')\n break\n\n case TimeRange.Weekly:\n mo = mo.subtract(7, 'days')\n break\n\n case TimeRange.Monthly:\n mo = mo.subtract(1, 'months')\n break\n\n case TimeRange.Yearly:\n mo = mo.subtract(1, 'years')\n break\n\n default:\n mo = moment('2021-06-02')\n break\n }\n\n return convertMomentToBigInt(mo)\n}\n\ninterface list {\n name: string\n id: string\n url: string\n}\nconst Home = () => {\n const { t } = useTranslation()\n const history = useHistory()\n const { loading, loggedIn, userData } = useUser()\n const [videos, setVideos] = useState([])\n const [previewVideoId, setPreviewVideoId] = useState('')\n const [loadingVideos, setLoadingVideos] = useState(true)\n const [loadingMore, setLoadingMore] = useState(false)\n const [hasMore, setHasMore] = useState(false)\n\n const params = paramSupport\n ? new URLSearchParams(window.location.search)\n : null\n const defaultSort =\n params && params?.get('s') ? (params?.get('s') as SortBy) : SortBy.Hot\n const defaultTime =\n params && params?.get('t')\n ? (params?.get('t') as TimeRange)\n : TimeRange.Weekly\n const [sortBy, setSortBy] = useState(defaultSort)\n const [timeRange, setTimeRange] = useState(defaultTime)\n const approvalMode =\n params &&\n !!params?.get('a') &&\n userData?.id &&\n moderators.indexOf(userData?.id) !== -1\n\n const load = useCallback(\n async (\n append: boolean = false,\n offset: number = 0,\n maxResults: number = 12,\n newSortBy: SortBy = SortBy.Hot,\n newTimeRange: TimeRange = TimeRange.Weekly,\n ) => {\n setLoadingMore(append)\n setHasMore(false)\n try {\n const backend = await getBackend()\n const start = Date.now()\n\n const recommendedVideosResult = approvalMode\n ? await backend.getRecommendedWithTags(\n BigInt(offset),\n BigInt(maxResults),\n [Tags.Reviewed],\n false,\n )\n : await backend.getVideosWithTagsAndSort(\n BigInt(offset),\n BigInt(maxResults),\n [Tags.CopyrightedContent, Tags.Illegal, Tags.Nsfw],\n false,\n newSortBy,\n getFromDate(\n newSortBy !== SortBy.Newest ? newTimeRange : TimeRange.AllTime,\n ),\n )\n\n if (recommendedVideosResult.length > 0) {\n const [videosList] = recommendedVideosResult\n if (videosList && videosList.length > 0) {\n if (append) {\n setVideos([...videos, ...videosList])\n } else {\n setVideos(videosList)\n }\n setHasMore(true)\n }\n } else if (!append) {\n setVideos([])\n }\n } catch (e) {\n console.error(e)\n }\n setLoadingVideos(false)\n setLoadingMore(false)\n },\n [videos, approvalMode, sortBy, timeRange],\n )\n\n useEffect(() => {\n setLoadingVideos(true)\n setSortBy(defaultSort)\n setTimeRange(defaultTime)\n load(false, 0, 12, defaultSort, defaultTime)\n }, [approvalMode, defaultSort, defaultTime])\n\n useEffect(() => {\n if (!loading && loggedIn && (!userData || !userData.userName)) {\n history.push(pages.account.path)\n }\n // console.log('userData', userData)\n }, [loading, loggedIn, userData?.userName])\n\n // useEffect(() => {\n // load()\n // }, [approvalMode])\n\n const onVideoMouseOver = (videoId: string) => {\n if (approvalMode) setPreviewVideoId(videoId)\n }\n\n const onVideoMouseOut = (videoId: string) => {\n if (approvalMode) setPreviewVideoId('')\n }\n\n const updateTag = useCallback(\n async (videoId: string, tag: string) => {\n if (approvalMode) {\n // Remove video from local list\n const newVideosList = [...videos]\n // console.log('newVideosList', newVideosList)\n newVideosList.splice(\n newVideosList.findIndex(({ video }) => video.id === videoId),\n 1,\n )\n\n // console.log('newVideosList', newVideosList)\n setVideos(newVideosList)\n\n const backend = await getBackend()\n const start = Date.now()\n const result = await backend.updateTags(videoId, [Tags.Reviewed, tag])\n // console.log(\n // `updateTags(${videoId}, ${tag}) took ${Date.now() - start}ms`,\n // result,\n // )\n // load()\n }\n },\n [approvalMode, videos],\n )\n\n const sortOnChange = useCallback(\n (newSortBy: SortBy, newTimeRange: TimeRange) => {\n // setLoadingVideos(true)\n // setSortBy(newSortBy)\n // setTimeRange(newTimeRange)\n // load(false, 0, 12, newSortBy, newTimeRange)\n let newUrl = `/?s=${newSortBy}&t=${newTimeRange}`\n history.push(newUrl)\n },\n [],\n )\n\n return (\n \n {loadingVideos ? (\n \n ) : (\n <>\n
\n {approvalMode ? (\n
Approval Mode ON
\n ) : (\n \n )}\n load(true, videos.length, 12, sortBy, timeRange)}\n hasMore={hasMore}\n loader={loadingMore && }\n >\n {videos.map(({ video, user, verified }, i) => (\n \n ))}\n \n
\n \n )}\n\n {/* */}\n
\n )\n}\n\nexport default Home\n","import { useEffect } from 'react'\nimport { useHistory } from 'react-router-dom'\n\nimport { Loading } from '../components'\nimport { logout } from '../lib/icp'\n\nconst Logout = () => {\n useEffect(() => {\n logout().then(() => {\n window.location.href = '/'\n })\n }, [])\n\n return \n}\n\nexport default Logout\n","import { ComponentType, useEffect } from 'react'\nimport { useHistory } from 'react-router-dom'\n\nimport { Loading } from '../components'\nimport { useUser } from '../hooks'\n\nexport const withAuthCheck = (\n ChildComponent: ComponentType,\n isAnon?: boolean,\n) => {\n const WithAuthHOC = () => {\n const { loading, loggedIn } = useUser()\n\n const router = useHistory()\n\n useEffect(() => {\n if (!loading) {\n if (!isAnon && !loggedIn) {\n router.replace('/')\n } else if (isAnon && loggedIn) {\n router.replace('/')\n }\n }\n }, [router, loading, isAnon, loggedIn])\n\n if (\n (isAnon && !loading && !loggedIn) ||\n (!isAnon && !loading && loggedIn)\n ) {\n return \n }\n\n return \n }\n\n WithAuthHOC.displayName = 'WithAuthHOC'\n\n return WithAuthHOC\n}\n","import { useHistory, Link } from 'react-router-dom'\n\nimport { Button, Page } from '../../components'\nimport { withAuthCheck } from '../../hoc'\nimport pages from '..'\nimport { login } from '../../lib/icp'\nimport { useTranslation } from '../../hooks'\n\nimport styles from './Login.module.scss'\n\nconst Register = () => {\n const { t } = useTranslation()\n const history = useHistory()\n\n const signUp = () => {\n login(() => {\n history.push(pages.account.path)\n })\n }\n\n return (\n \n
\n
\n

\n {t('loginPageTitle')}\n

\n \n \n \n\n {/* */}\n
\n\n

\n {t('loginIfNotRegistered')}\n

\n\n

\n \n

\n\n

\n {t('loginIfRegistered')}\n

\n\n

\n \n

\n
\n
\n )\n}\n\nexport default withAuthCheck(Register, true)\n","const createImage = (url: string): Promise =>\n new Promise((resolve, reject) => {\n const image = new Image()\n image.addEventListener('load', () => resolve(image))\n image.addEventListener('error', (error) => reject(error))\n image.setAttribute('crossOrigin', 'anonymous') // needed to avoid cross-origin issues on CodeSandbox\n image.src = url\n })\n\nfunction getRadianAngle(degreeValue: number) {\n return (degreeValue * Math.PI) / 180\n}\n\n/**\n * This function was adapted from the one in the ReadMe of https://github.com/DominicTobias/react-image-crop\n * @param {File} image - Image File url\n * @param {Object} pixelCrop - pixelCrop Object provided by react-easy-crop\n * @param {number} rotation - optional rotation parameter\n */\nexport async function getCroppedImg(\n imageSrc: string,\n pixelCrop: any,\n rotation = 0,\n): Promise {\n const image = await createImage(imageSrc)\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n\n const maxSize = Math.max(image.width, image.height)\n const safeArea = 2 * ((maxSize / 2) * Math.sqrt(2))\n\n // set each dimensions to double largest dimension to allow for a safe area for the\n // image to rotate in without being clipped by canvas context\n canvas.width = safeArea\n canvas.height = safeArea\n\n if (!ctx) {\n return Promise.reject()\n }\n\n // translate canvas context to a central location on image to allow rotating around the center.\n ctx.translate(safeArea / 2, safeArea / 2)\n ctx.rotate(getRadianAngle(rotation))\n ctx.translate(-safeArea / 2, -safeArea / 2)\n\n // draw rotated image and store data.\n ctx.drawImage(\n image,\n safeArea / 2 - image.width * 0.5,\n safeArea / 2 - image.height * 0.5,\n )\n const data = ctx.getImageData(0, 0, safeArea, safeArea)\n\n // set canvas width to final desired crop size - this will clear existing context\n canvas.width = pixelCrop.width\n canvas.height = pixelCrop.height\n\n if (!ctx) {\n return Promise.reject()\n }\n\n // paste generated rotate image with correct offsets for x,y crop values.\n ctx.putImageData(\n data,\n Math.round(0 - safeArea / 2 + image.width * 0.5 - pixelCrop.x),\n Math.round(0 - safeArea / 2 + image.height * 0.5 - pixelCrop.y),\n )\n\n // As Base64 string\n return canvas.toDataURL('image/jpeg')\n\n // As a blob\n // s\n}\n\nexport async function getRotatedImage(imageSrc: string, rotation = 0) {\n const image = await createImage(imageSrc)\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n\n const orientationChanged =\n rotation === 90 || rotation === -90 || rotation === 270 || rotation === -270\n if (orientationChanged) {\n canvas.width = image.height\n canvas.height = image.width\n } else {\n canvas.width = image.width\n canvas.height = image.height\n }\n\n if (!ctx) {\n return Promise.reject()\n }\n\n ctx.translate(canvas.width / 2, canvas.height / 2)\n ctx.rotate((rotation * Math.PI) / 180)\n ctx.drawImage(image, -image.width / 2, -image.height / 2)\n\n return new Promise((resolve) => {\n canvas.toBlob((file) => {\n // @ts-ignore\n resolve(URL.createObjectURL(file))\n }, 'image/jpeg')\n })\n}\n","import CurrencyInput from 'react-currency-input-field'\nimport {\n ChangeEvent,\n FormEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport { useHistory } from 'react-router-dom'\nimport Cropper from 'react-easy-crop'\n\nimport { Button, CachedImage, ErrorBox, Page } from '../../components'\nimport { withAuthCheck } from '../../hoc'\nimport pages from '../../pages'\nimport {\n getBackend,\n getUserData,\n updateAuthChangedListeners,\n} from '../../lib/icp'\nimport { useTranslation, useUser } from '../../hooks'\n\nimport styles from './Account.module.scss'\nimport generateProfilePhotoUrl, {\n preloadProfilePhoto,\n} from '../../lib/profilePhoto'\nimport { getCroppedImg } from '../../lib/canvas'\nimport { create } from 'ipfs-http-client'\nimport { IPFS_CONFIG } from '../../config'\nimport { getBackendActor } from '../../lib/agent'\nimport {\n UserMonitizationSetting,\n WalletAddress,\n MonitizationSetting,\n} from '../../types/backend/dsocial/dsocial.did'\n\nconst PROFILE_PHOTO_FILE_TYPES = [\n 'image/jpeg .jpeg',\n 'image/jpeg .jpg',\n 'image/png .png',\n]\n\nconst ipfs = create(IPFS_CONFIG)\n\nconst ipfsUpload = async (\n file: any,\n onUploadProgress?: (progress: number) => void,\n): Promise => {\n let i = 0\n const max = 3\n\n for (; i < max; i += 1) {\n try {\n const result = await ipfs.add(file, {\n progress: (bytes: number) => {\n onUploadProgress && onUploadProgress(bytes / file.size)\n },\n pin: true,\n })\n return result.path\n } catch (e) {\n console.log('failed to upload, trying again...', i + 1, e)\n await new Promise((resolve) => setTimeout(resolve, 500 * (i + 1)))\n }\n }\n\n return null\n}\n\nconst AccountDetails = () => {\n const { t } = useTranslation()\n const inputFile = useRef(null)\n const { userData, loading: loadingUser } = useUser()\n const history = useHistory()\n const [updated, setUpdated] = useState(false)\n const [userName, setUserName] = useState(userData?.userName)\n const [loading, setLoading] = useState(false)\n const [updating, setUpdating] = useState(false)\n const [error, setError] = useState('')\n const [channelName, setChannelName] = useState(userData?.displayName)\n const [profilePhoto, setProfilePhoto] = useState(userData?.profilePhoto)\n const [crop, setCrop] = useState({ x: 0, y: 0 })\n const [zoom, setZoom] = useState(1)\n const [imageToCrop, setImageToCrop] = useState(null)\n const [croppedImage, setCroppedImage] = useState(null)\n const [pixels, setPixels] = useState(null)\n const [loadingChoosePhoto, setLoadingChoosePhoto] = useState(false)\n const [resizingPhoto, setResizingPhoto] = useState(false)\n const [uploadingPhoto, setUploadingPhoto] = useState(false)\n\n const onCropComplete = useCallback((croppedArea, croppedAreaPixels) => {\n console.log(croppedArea, croppedAreaPixels)\n setPixels(croppedAreaPixels)\n }, [])\n\n const onChangeUserName = (e: ChangeEvent) => {\n setUserName(e.target.value)\n setError('')\n }\n\n const onSubmit = async (e: FormEvent) => {\n e.preventDefault()\n\n setError('')\n setUpdated(false)\n\n if (!userName || !userName.trim()) {\n setError(t('accountErrorUserNameEmpty'))\n return\n }\n\n setLoading(true)\n setUpdating(true)\n\n // Upload profile photo if updated\n let newProfilePhotoHash = profilePhoto\n if (croppedImage) {\n setUploadingPhoto(true)\n const blob = await (await fetch(croppedImage)).blob()\n const newProfileHash = await ipfsUpload(blob, (progress) => {\n console.log('profile upload', progress)\n })\n\n if (!newProfileHash) {\n setUploadingPhoto(false)\n setError(t('accountErrorProfilePhotoFailed'))\n setLoading(false)\n setUpdating(false)\n return\n }\n\n newProfilePhotoHash = newProfileHash\n setUploadingPhoto(false)\n preloadProfilePhoto(newProfilePhotoHash, croppedImage)\n setProfilePhoto(newProfilePhotoHash)\n setCroppedImage(null)\n }\n\n try {\n const backend = await getBackend()\n const isUserNameAvailable = await backend.checkUsernameAvailable(\n userName || '',\n )\n const updateAccountDetails = isUserNameAvailable\n ? await backend.updateUser(\n newProfilePhotoHash || '',\n userName || '',\n channelName || '',\n )\n : null\n\n if (\n !isUserNameAvailable ||\n updateAccountDetails?.status === 'user-name-already-registered'\n ) {\n setError(t('accountErrorUserNameAlreadyTaken'))\n setLoading(false)\n } else if (updateAccountDetails?.status === 'update-user-success') {\n const userData = await getUserData()\n updateAuthChangedListeners(true, userData)\n setLoading(false)\n setUpdated(true)\n }\n } catch (e) {\n setError(t('accountError'))\n setLoading(false)\n }\n setUpdating(false)\n }\n\n const choosePhoto = () => {\n inputFile?.current?.click()\n }\n\n const onSelectFile = (e: ChangeEvent) => {\n setImageToCrop(null)\n setPixels(null)\n setZoom(1)\n setCrop({ x: 0, y: 0 })\n if (!e.target.files || e.target.files.length === 0) return\n\n const imageFile = e.target.files[0]\n\n if (\n PROFILE_PHOTO_FILE_TYPES.filter(\n (fileType) => fileType.indexOf(imageFile.type) !== -1,\n ).length === 0\n ) {\n setError(t('accountErrorValidImage'))\n return\n }\n\n setLoadingChoosePhoto(true)\n const reader = new FileReader()\n reader.addEventListener(\n 'load',\n () => {\n setImageToCrop(reader.result as string)\n setLoadingChoosePhoto(false)\n },\n false,\n )\n reader.readAsDataURL(imageFile)\n }\n\n const failedResize = () => {\n setResizingPhoto(false)\n setError(t('accountErrorFailedResize'))\n }\n\n const showResult = async () => {\n if (!imageToCrop) return\n\n setResizingPhoto(true)\n\n try {\n let newCroppedImage = await getCroppedImg(imageToCrop!, pixels)\n\n // Resize the image\n const image = new Image()\n image.setAttribute('crossOrigin', 'anonymous')\n image.onload = () => {\n const canvas = document.createElement('canvas')\n const maxSize = 176\n let width = image.width\n let height = image.height\n if (width > height) {\n if (width > maxSize) {\n height *= maxSize / width\n width = maxSize\n }\n } else {\n if (height > maxSize) {\n width *= maxSize / height\n height = maxSize\n }\n }\n canvas.width = width\n canvas.height = height\n\n const ctx = canvas.getContext('2d')\n\n if (!ctx) {\n failedResize()\n return\n }\n\n ctx.drawImage(image, 0, 0, width, height)\n newCroppedImage = canvas.toDataURL('image/jpeg')\n\n console.log('done', { croppedImage })\n setCroppedImage(newCroppedImage)\n setResizingPhoto(false)\n setImageToCrop(null)\n }\n image.onerror = failedResize\n image.src = newCroppedImage\n } catch (e) {\n console.error(e)\n setResizingPhoto(false)\n }\n }\n\n const cancelEdit = () => {\n setImageToCrop(null)\n setCroppedImage(null)\n setPixels(null)\n setZoom(1)\n setCrop({ x: 0, y: 0 })\n }\n\n return (\n \n

{t('accountPageTitle')}

\n\n {error && {error}}\n {updated &&

{t('accountUpdated')}

}\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{t('accountUserNameLabel')}\n \n
{t('accountChannelNameLabel')}\n setChannelName(e.target.value)}\n />\n
\n {t('accountProfilePhotoLabel')}\n \n {imageToCrop ? (\n
\n
\n \n
\n
\n \n {resizingPhoto\n ? t('accountResizingPhoto')\n : t('accountDone')}\n \n \n {t('accountCancel')}\n \n
\n
\n ) : (\n <>\n {profilePhoto || croppedImage ? (\n \n ) : null}\n \n \n {loadingChoosePhoto\n ? t('accountLoadingPhoto')\n : t('accountChoosePhoto')}\n \n \n )}\n
\n
\n \n {uploadingPhoto && t('accountUploadingPhoto')}\n {updating &&\n !uploadingPhoto &&\n t('accountUpdatingAccountDetails')}\n {!uploadingPhoto &&\n (!loading || !updating) &&\n t('accountUpdateAccountDetails')}\n \n\n {!loading ? (\n \n {t('accountLogout')}\n \n ) : null}\n
\n
\n
\n \n )\n}\n\nexport default withAuthCheck(AccountDetails)\n","import { initializeApp } from 'firebase/app'\nimport { getStorage, ref } from 'firebase/storage'\nimport { getFirestore, doc, onSnapshot } from 'firebase/firestore'\n\nconst firebaseConfig = {\n apiKey: 'AIzaSyAhhHcTBpTX5O01a4lQKUzvcKLOtDzdJyU',\n authDomain: 'ilecstdybtaosa.firebaseapp.com',\n projectId: 'ilecstdybtaosa',\n storageBucket: 'ilecstdybtaosa.appspot.com',\n messagingSenderId: '493940227667',\n appId: '1:493940227667:web:9a50692082acc4352e90a6',\n}\n\ninitializeApp(firebaseConfig)\nconst storage = getStorage()\nconst fs = getFirestore()\n\nexport const getRef = (filePath: string) => ref(storage, filePath)\n\nexport function on(\n collectionName: string,\n id: string,\n cb: (data: T | null | undefined) => Promise | void,\n) {\n return onSnapshot(\n doc(fs, collectionName, id),\n (doc) => {\n if (doc.exists()) {\n const data = {\n id,\n ...doc.data(),\n }\n // @ts-ignore\n cb(data as T)\n } else {\n cb(null)\n }\n },\n (err) => {\n console.warn(`${collectionName}/${id} error`, err)\n cb(null)\n },\n )\n}\n","import { getDownloadURL, uploadBytesResumable } from 'firebase/storage'\nimport * as Sentry from '@sentry/react'\n\nimport { getRef } from './db'\n\nexport const uploadToCloud = async (\n fileName: string,\n file: File,\n progressFn?: (newProgress: number) => void,\n blob?: Blob,\n): Promise => {\n try {\n const ref = getRef(fileName)\n\n const uploadTask = uploadBytesResumable(ref, blob || file, {\n contentType: file.type,\n })\n\n const downloadUrl = await new Promise((resolve) => {\n uploadTask.on(\n 'state_changed',\n (snapshot) => {\n const progress = Math.max(\n 1,\n Math.ceil((snapshot.bytesTransferred / snapshot.totalBytes) * 100),\n )\n console.log('Upload is ' + progress + '% done')\n switch (snapshot.state) {\n case 'paused':\n console.log('Upload is paused')\n break\n case 'running':\n console.log('Upload is running')\n break\n }\n if (progressFn) progressFn(progress)\n },\n (error) => {\n // Handle unsuccessful uploads\n console.log(error)\n resolve('')\n },\n async () => {\n const newUrl = await getDownloadURL(ref)\n resolve(newUrl || '')\n },\n )\n })\n\n return downloadUrl\n } catch (e) {\n console.log('upload failed', e)\n Sentry.captureException(e)\n return ''\n }\n}\n","import { ChangeEvent, ReactNode, useCallback, useState, useEffect } from 'react'\nimport { SkynetClient } from 'skynet-js'\nimport Arweave from 'arweave'\nimport slugify from 'slugify'\nimport { v4 as uuid } from 'uuid'\nimport axios from 'axios'\nimport * as Sentry from '@sentry/react'\nimport { IoCloudDownloadOutline, IoTrendingUpOutline } from 'react-icons/io5'\nimport { Link } from 'react-router-dom'\nimport { useDropzone, DropEvent, FileRejection } from 'react-dropzone'\nimport { JWKInterface } from 'arweave/node/lib/wallet'\nimport { useHistory } from 'react-router'\nimport { create } from 'ipfs-http-client'\n\nimport pages, { generateUrl } from '../../pages'\nimport { Button, Page, ErrorBox, CachedImage } from '../../components'\nimport { getBackend } from '../../lib/icp'\nimport { withAuthCheck } from '../../hoc'\n\nimport {\n USE_WALLET,\n AR_WEAVE_CONFIG,\n IPFS_CONFIG,\n AR_ENABLED,\n CLOUD_UPLOAD,\n CLOUD_TRANSCODING,\n} from '../../config'\nimport { getCroppedImg } from '../../lib/canvas'\nimport Cropper from 'react-easy-crop'\nimport { Asset } from '../../types/backend/dsocial/dsocial.did'\nimport { HLS } from '../../config/assetCategories'\nimport { useTranslation, useUser } from '../../hooks'\n\nimport styles from './Upload.module.scss'\nimport { TFunction, Trans } from 'react-i18next'\nimport { uploadToCloud } from '../../lib/upload'\nimport { on } from '../../lib/db'\nimport { TranscodingProgress } from '../../types'\n\nconst arweave = Arweave.init(AR_WEAVE_CONFIG)\n\nconst ipfs = create(IPFS_CONFIG)\n\nconst skynetUpload = async (\n file: File,\n onUploadProgress?: (progress: number) => void,\n): Promise => {\n let i = 0\n const max = 3\n\n const client = new SkynetClient('https://siasky.net', {\n onUploadProgress,\n })\n\n for (; i < max; i += 1) {\n try {\n // Upload user's file and get backs descriptor for our Skyfile\n const { skylink } = await client.uploadFile(file)\n\n // skylinks start with `sia://` and don't specify a portal URL\n // we can generate URLs for our current portal though.\n const skylinkUrl = await client.getSkylinkUrl(skylink)\n\n console.log('File Uploaded:', skylinkUrl)\n return skylinkUrl\n } catch (e) {\n console.log('failed to upload, trying again...', i + 1)\n await new Promise((resolve) => setTimeout(resolve, 500 * (i + 1)))\n }\n }\n\n return null\n}\n\nconst ipfsUpload = async (\n file: File,\n contentType: string,\n onUploadProgress?: (progress: number) => void,\n blob?: Blob,\n): Promise => {\n let i = 0\n const max = 3\n\n let newBlob: Blob | undefined = blob\n\n if (!newBlob) {\n const ar = await getArrayBuffer(file)\n\n if (!ar) return null\n\n newBlob = new Blob([ar], { type: contentType })\n }\n\n for (; i < max; i += 1) {\n try {\n const result = await ipfs.add(newBlob, {\n progress: (bytes: number) => {\n onUploadProgress &&\n onUploadProgress(Math.ceil((bytes / file.size) * 100))\n },\n pin: true,\n })\n return result.path\n } catch (e) {\n console.log('failed to upload, trying again...', i + 1, e)\n await new Promise((resolve) => setTimeout(resolve, 500 * (i + 1)))\n\n // last try\n if (i === max - 1) {\n Sentry.captureException(e)\n }\n }\n }\n\n return null\n}\n\nconst upload = async (\n file: File,\n contentType: string,\n onUploadProgress: (progress: number, status?: string) => void,\n blob?: Blob,\n fileName?: string,\n) => {\n if (CLOUD_UPLOAD && fileName) {\n return uploadToCloud(fileName!, file, onUploadProgress, blob)\n }\n\n return AR_ENABLED\n ? arweaveUpload(file, contentType, onUploadProgress)\n : ipfsUpload(file, contentType, onUploadProgress, blob)\n}\n\nconst arweaveUpload = async (\n file: File,\n contentType: string,\n onUploadProgress: (progress: number, status?: string) => void,\n): Promise => {\n try {\n const key = USE_WALLET ? 'use_wallet' : await arweave.wallets.generate()\n const thumbBuffer = await getArrayBuffer(file)\n\n if (!thumbBuffer) {\n console.error('thumbBuffer is null')\n return ''\n }\n\n const transaction = await getTransaction(thumbBuffer!, contentType, key)\n const mpdFee = await arweave.ar.winstonToAr(transaction.reward)\n\n console.log('mpdFee', mpdFee)\n console.log('in $', Number(mpdFee) * 54.32)\n\n console.log('before sign')\n await arweave.transactions.sign(transaction, key)\n console.log('after sign', transaction)\n\n let uploader = await arweave.transactions.getUploader(transaction)\n\n while (!uploader.isComplete) {\n await uploader.uploadChunk()\n console.log(\n `${uploader.pctComplete}% complete, ${uploader.uploadedChunks}/${uploader.totalChunks}`,\n )\n onUploadProgress(uploader.pctComplete)\n }\n\n return transaction.id\n } catch (e) {\n console.error(e)\n return null\n }\n}\n\nconst dsocialUpload = async (\n file: File,\n contentType: string,\n onUploadProgress: (progress: number) => void,\n): Promise => {\n try {\n const data = new FormData()\n data.append('body', file)\n\n await axios.post('http://localhost:8999/upload', data, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n return ''\n } catch (e) {\n console.error(e)\n return null\n }\n}\n\nconst getArrayBuffer = (file: File) =>\n new Promise((resolve) => {\n const reader = new window.FileReader()\n\n reader.onloadend = () => {\n resolve(reader.result)\n }\n\n reader.readAsArrayBuffer(file)\n })\n\nconst getTransaction = async (\n file: string | ArrayBuffer,\n contentType: string,\n key?: JWKInterface | 'use_wallet',\n) => {\n // @ts-ignore\n console.log('getTransaction start', file.byteLength, new Date().toISOString())\n const transaction = await arweave.createTransaction({ data: file }, key)\n console.log('after createTransaction', new Date().toISOString())\n transaction.addTag('Content-Type', contentType)\n\n return transaction\n}\n\nconst FILE_SIZE_LIMIT = 10 * 1024 * 1024 * 1024\n\ninterface DropperProps {\n onDrop: (file: File) => void\n onError: (error: string) => void\n dropLabel: ReactNode | string\n fileTypes: string[]\n invalidFileTypeError: string\n}\n\nconst Dropper = ({\n onDrop,\n onError,\n dropLabel,\n fileTypes,\n invalidFileTypeError,\n}: DropperProps) => {\n const { t } = useTranslation()\n const onDropInternal = useCallback(\n (acceptedFiles: File[], _: FileRejection[], _2: DropEvent) => {\n onError('')\n\n if (!acceptedFiles || acceptedFiles.length === 0) return\n\n const file = acceptedFiles[0]\n\n if (\n fileTypes.filter((fileType) => fileType.indexOf(file.type) !== -1)\n .length === 0\n ) {\n onError(invalidFileTypeError)\n return\n }\n\n onDrop(file)\n },\n [],\n )\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop: onDropInternal,\n })\n\n return (\n \n \n
\n {/* */}\n \n
\n

\n {isDragActive ? t('uploadDropHere') : dropLabel}\n

\n
\n )\n}\n\ninterface Progress {\n uploadProgress?: number\n uploaded?: boolean\n transcodingProgress?: number\n transcoded?: boolean\n uploadARWeaveProgress?: number\n uploadedToARWeave?: boolean\n}\n\ninterface UploadingProgress {\n thumbnail?: Progress\n video?: Progress\n record?: Progress\n}\n\ninterface TranscodeComplete {\n transactionId: string\n videoLength?: number\n icUrl?: string\n}\n\nconst InfoBox = ({ children }: { children: ReactNode }) => (\n
\n

{children}

\n
\n)\n\nconst fileExtension = (fileName: string) => fileName.split('.').pop()\n\nconst processFile = (\n t: TFunction<'translation', undefined>,\n fileName: string,\n setProgress: (newProgress: Progress) => void,\n originalProgress: Progress | null | undefined,\n) =>\n new Promise(async (resolve, reject) => {\n let progressObj: Progress = {\n ...(originalProgress || {}),\n }\n\n try {\n await axios.post(\n 'https://us-central1-ilecstdybtaosa.cloudfunctions.net/queueTranscoding',\n {\n name: fileName,\n },\n )\n\n const id = fileName.replace(/\\.[^/.]+$/, '')\n\n const unsubscribe = on('progress', id, (status) => {\n if (status) {\n const {\n progress,\n failed,\n completed,\n uploadedFailed,\n uploaded,\n transactionId,\n videoLength,\n icUrl,\n } = status\n\n if (transactionId) {\n setProgress({\n ...progressObj,\n uploadedToARWeave: true,\n uploadARWeaveProgress: uploaded,\n uploadProgress: 100,\n uploaded: true,\n transcodingProgress: 100,\n transcoded: true,\n })\n resolve({ icUrl, transactionId, videoLength })\n unsubscribe()\n return\n }\n\n if (uploaded) {\n setProgress({\n ...progressObj,\n uploadedToARWeave: uploaded === 100,\n uploadARWeaveProgress: uploaded,\n uploadProgress: 100,\n uploaded: true,\n transcodingProgress: 100,\n transcoded: true,\n })\n return\n }\n\n if (uploadedFailed) {\n unsubscribe()\n reject(new Error(t('uploadErrorUploadToArWeaveFailed')))\n return\n }\n\n if (completed) {\n setProgress({\n ...progressObj,\n uploadProgress: 100,\n uploaded: true,\n transcodingProgress: 100,\n transcoded: true,\n })\n return\n }\n\n if (failed) {\n unsubscribe()\n reject(new Error(t('uploadErrorTranscodingFailed')))\n return\n }\n\n if (progress) {\n setProgress({\n ...progressObj,\n uploadProgress: 100,\n uploaded: true,\n transcodingProgress: progress,\n transcoded: false,\n })\n return\n }\n }\n })\n } catch (e) {\n reject(new Error(t('uploadErrorFailedUpload')))\n }\n })\n\nconst Upload = () => {\n const { t } = useTranslation()\n const history = useHistory()\n const { loading, loggedIn, userData } = useUser()\n const [videoFile, setVideoFile] = useState()\n const [thumbnailBuffer, setThumbnailBuffer] = useState()\n const [uploading, setUploading] = useState<\n UploadingProgress | null | undefined\n >(null)\n const [invalidThumbnail, setInvalidThumbnail] = useState(false)\n const [invalidVideo, setInvalidVideo] = useState(false)\n const [title, setTitle] = useState('')\n const [description, setDescription] = useState('')\n const [error, setError] = useState('')\n const [progress, setProgress] = useState(0)\n const [crop, setCrop] = useState({ x: 0, y: 0 })\n const [zoom, setZoom] = useState(1)\n const [imageToCrop, setImageToCrop] = useState(null)\n const [croppedImage, setCroppedImage] = useState(null)\n const [pixels, setPixels] = useState(null)\n const [loadingChoosePhoto, setLoadingChoosePhoto] = useState(false)\n const [resizingPhoto, setResizingPhoto] = useState(false)\n const [transactionId, setTransactionId] = useState('')\n const [noArWallet, setNoArWallet] = useState(false)\n\n useEffect(() => {\n if (!loading && loggedIn && (!userData || !userData.userName)) {\n history.push(pages.account.path)\n }\n }, [loading, loggedIn, userData?.userName])\n\n const onCropComplete = useCallback((croppedArea, croppedAreaPixels) => {\n console.log(croppedArea, croppedAreaPixels)\n setPixels(croppedAreaPixels)\n }, [])\n\n const captureThumbnail = (file: File) => {\n setImageToCrop(null)\n setPixels(null)\n setZoom(1)\n setCrop({ x: 0, y: 0 })\n // event.preventDefault()\n setInvalidThumbnail(false)\n setError('')\n\n // if (!event?.target?.files || !event?.target?.files?.length) return\n\n // const file = event.target.files[0]\n\n setThumbnailBuffer(file)\n\n setError('')\n\n setLoadingChoosePhoto(true)\n const reader = new FileReader()\n reader.addEventListener(\n 'load',\n () => {\n setImageToCrop(reader.result as string)\n setLoadingChoosePhoto(false)\n },\n false,\n )\n reader.readAsDataURL(file)\n }\n\n const failedResize = () => {\n setResizingPhoto(false)\n setError(t('accountFailedResize'))\n }\n\n const showResult = async () => {\n if (!imageToCrop) return\n\n setResizingPhoto(true)\n\n try {\n let newCroppedImage = await getCroppedImg(imageToCrop!, pixels)\n\n // Resize the image\n const image = new Image()\n image.setAttribute('crossOrigin', 'anonymous')\n image.onload = () => {\n const canvas = document.createElement('canvas')\n const maxSize = 1280\n let width = image.width\n let height = image.height\n if (width > height) {\n if (width > maxSize) {\n height *= maxSize / width\n width = maxSize\n }\n } else {\n if (height > maxSize) {\n width *= maxSize / height\n height = maxSize\n }\n }\n canvas.width = width\n canvas.height = height\n\n const ctx = canvas.getContext('2d')\n\n if (!ctx) {\n failedResize()\n return\n }\n\n ctx.drawImage(image, 0, 0, width, height)\n newCroppedImage = canvas.toDataURL('image/jpeg')\n\n console.log('done', { croppedImage })\n setCroppedImage(newCroppedImage)\n setResizingPhoto(false)\n setImageToCrop(null)\n }\n image.onerror = failedResize\n image.src = newCroppedImage\n } catch (e) {\n console.error(e)\n setResizingPhoto(false)\n }\n }\n\n const cancelEdit = () => {\n setImageToCrop(null)\n setCroppedImage(null)\n setPixels(null)\n setZoom(1)\n setCrop({ x: 0, y: 0 })\n }\n\n const captureFile = (file: File) => {\n // event.preventDefault()\n setInvalidVideo(false)\n setError('')\n\n // if (!event?.target?.files || !event?.target?.files?.length) return\n\n // const file = event.target.files[0]\n // if (file.size > FILE_SIZE_LIMIT) {\n // setError(t('uploadFileTooBig'))\n // return\n // }\n setVideoFile(file)\n // const reader = new window.FileReader()\n // reader.readAsArrayBuffer(file)\n\n // reader.onloadend = () => {\n // // @ts-ignore\n // setBuffer(new Buffer(reader.result))\n // console.log('thumbnail loaded')\n // }\n }\n\n const onChangeTransactionId = (e: ChangeEvent) => {\n setTransactionId(e.target.value)\n setError(t('uploadFailedResize'))\n }\n\n const uploadVideo = async () => {\n try {\n setError('')\n if (!thumbnailBuffer || invalidThumbnail || !croppedImage) {\n setError(t('uploadErrorSelectThumbnail'))\n return\n }\n\n if (AR_ENABLED) {\n if (!transactionId) {\n setError(t('uploadErrorTransactionId'))\n return\n }\n\n if (USE_WALLET) {\n let bal = 0\n\n try {\n const address = await arweave.wallets.jwkToAddress('use_wallet')\n const winston = await arweave.wallets.getBalance(address)\n bal = Number((await arweave.ar.winstonToAr(winston)) || '0')\n } catch (e) {\n // do nothing\n }\n\n if (!bal) {\n setNoArWallet(true)\n return\n }\n }\n } else {\n if (!videoFile || invalidVideo) {\n setError(t('uploadErrorVideoFile'))\n return\n }\n }\n\n setUploading({\n thumbnail: {\n uploadProgress: 0,\n },\n })\n\n const start = Date.now()\n\n const imageId = uuid()\n const imageFileName = `${imageId}.${fileExtension(thumbnailBuffer!.name)}`\n const blob = await (await fetch(croppedImage)).blob()\n let thumbPath = await upload(\n thumbnailBuffer!,\n 'image/jpeg',\n (progress) => {\n setUploading({\n ...uploading,\n thumbnail: {\n uploadProgress: progress,\n },\n })\n },\n blob,\n imageFileName,\n )\n let thumbIcPath: string | undefined | null = ''\n\n if (!thumbPath) {\n setError(t('uploadErrorFailedUpload'))\n setUploading(null)\n return\n }\n\n const assets: Asset[] = []\n\n try {\n const imageTransaction = await processFile(\n t,\n imageFileName,\n (thumbnail) => {\n setUploading({\n ...uploading,\n thumbnail,\n video: {\n uploadProgress: 0,\n },\n })\n },\n {\n uploadProgress: 100,\n uploaded: true,\n },\n )\n // alert('imageTransactionId' + imageTransactionId)\n if (imageTransaction?.transactionId) {\n thumbPath = imageTransaction?.transactionId\n }\n thumbIcPath = imageTransaction?.icUrl\n console.log(imageTransaction)\n\n if (thumbIcPath) {\n assets.push({\n category: 'ict',\n url: thumbIcPath!,\n })\n }\n } catch (e: any) {\n setError(e.message)\n setUploading(null)\n return\n }\n\n const thumbnail = {\n uploadProgress: 100,\n uploaded: true,\n uploadARWeaveProgress: 100,\n uploadedToARWeave: true,\n }\n\n setUploading({\n ...uploading,\n thumbnail,\n video: {\n uploadProgress: 0,\n },\n })\n\n let videoPath: string | null = ''\n\n if (!AR_ENABLED) {\n const videoId = uuid()\n const videoFileName = `${videoId}.${fileExtension(videoFile!.name)}`\n\n videoPath = await upload(\n videoFile!,\n 'video/mp4',\n (progress) => {\n setUploading({\n ...uploading,\n thumbnail,\n video: {\n uploadProgress: progress,\n },\n })\n },\n undefined,\n videoFileName,\n )\n\n if (!videoPath) {\n setError(t('uploadErrorVideoFailedUpload'))\n setUploading(null)\n return\n }\n console.log('Arweave result', videoPath, Date.now() - start)\n\n if (CLOUD_TRANSCODING) {\n try {\n const videoTransaction = await processFile(\n t,\n videoFileName,\n (video) => {\n setUploading({\n ...uploading,\n thumbnail,\n video,\n })\n },\n {\n uploadProgress: 100,\n uploaded: true,\n },\n )\n if (videoTransaction?.transactionId) {\n videoPath = 'ar'\n assets.push({\n category: HLS,\n url: videoTransaction?.transactionId,\n })\n\n if (videoTransaction?.videoLength) {\n assets.push({\n category: 'length',\n url: videoTransaction?.videoLength!.toString(),\n })\n }\n }\n if (videoTransaction?.icUrl) {\n assets.push({\n category: 'icv',\n url: videoTransaction?.icUrl,\n })\n }\n } catch (e: any) {\n setError(e.message)\n setUploading(null)\n return\n }\n }\n } else {\n videoPath = 'ar'\n assets.push({\n category: HLS,\n url: transactionId,\n })\n }\n\n const video: Progress = {\n uploadProgress: 100,\n uploaded: true,\n uploadARWeaveProgress: 100,\n uploadedToARWeave: true,\n transcoded: true,\n transcodingProgress: 100,\n }\n\n setUploading({\n ...uploading,\n thumbnail,\n video,\n record: {\n uploaded: true,\n },\n })\n\n const backend = await getBackend()\n const uploadResult = await backend.uploadVideo(\n videoPath,\n thumbPath,\n title,\n description,\n assets,\n )\n\n setUploading({\n ...uploading,\n thumbnail,\n video,\n record: {\n uploadProgress: 100,\n uploaded: true,\n },\n })\n\n history.push(\n generateUrl(pages.video.path, {\n videoId: uploadResult.newVideoId,\n videoSlug: slugify(title, { lower: true, strict: true }),\n }),\n )\n } catch (e) {\n setError(t('uploadErrorVideoFailedUpload'))\n setUploading(null)\n Sentry.captureException(e)\n }\n }\n\n return (\n \n

{t('uploadPageTitle')}

\n\n {noArWallet && (\n \n \n Please install ArConnect Extension first. Follow the{' '}\n \n Getting Started\n {' '}\n guide if you haven't already.\n \n \n )}\n\n {error ? (\n {error}\n ) : (\n <>\n {AR_ENABLED && (\n \n \n If this is the first time you've uploaded to DSocial, read this{' '}\n \n Getting Started\n {' '}\n guide first.\n \n \n )}\n \n )}\n\n {uploading ? (\n
\n
    \n {uploading.thumbnail && (\n <>\n
  • \n {uploading.thumbnail.uploaded\n ? `✅ ${t('uploadThumbnailUploaded')}`\n : `⬆️ ${t('uploadThumbnailUploading', {\n progress: uploading.thumbnail.uploadProgress || 0,\n })}`}\n
  • \n <>\n {uploading.thumbnail.uploaded && CLOUD_TRANSCODING && (\n <>\n
  • \n {uploading.thumbnail.uploadedToARWeave\n ? `✅ ${t('uploadThumbnailUploadedToARWeave')}`\n : `⬆️ ${t('uploadThumbnailUploadingToARWeave', {\n progress:\n uploading.thumbnail.uploadARWeaveProgress || 0,\n })}`}\n
  • \n \n )}\n \n \n )}\n {uploading.video && (\n <>\n
  • \n {uploading.video.uploaded\n ? `✅ ${t('uploadVideoUploaded')}`\n : `⬆️ ${t('uploadVideoUploading', {\n progress: uploading.video.uploadProgress || 0,\n })}`}\n
  • \n <>\n {uploading.video.uploaded && CLOUD_TRANSCODING && (\n <>\n
  • \n {uploading.video.transcoded\n ? `✅ ${t('uploadVideoTranscoded')}`\n : `⬆️ ${t('uploadVideoTranscoding', {\n progress:\n uploading.video.transcodingProgress || 0,\n })}`}\n
  • \n {uploading.video.transcoded && (\n
  • \n {uploading.video.uploadedToARWeave\n ? `✅ ${t('uploadVideoUploadedToARWeave')}`\n : `⬆️ ${t('uploadVideoUploadingToARWeave', {\n progress:\n uploading.video.uploadARWeaveProgress || 0,\n })}`}\n
  • \n )}\n \n )}\n \n \n )}\n {uploading.record && (\n
  • \n {uploading.record.uploaded\n ? `✅ ${t('uploadVideoCreated')}`\n : `⬆️ ${t('uploadVideoCreating')}`}\n
  • \n )}\n
\n
\n ) : (\n {\n event.preventDefault()\n uploadVideo()\n }}\n >\n \n\n {!imageToCrop && (\n <>\n \n\n \n\n \n \n \n )}\n \n )}\n
\n )\n}\n\nexport default withAuthCheck(Upload)\n","export const HLS = 'hls'\n","import { Trans } from 'react-i18next'\nimport { Link } from 'react-router-dom'\n\nimport { Page } from '../components'\nimport { useTranslation } from '../hooks'\n\nconst NotFound = ({ error }: NotFoundProps) => {\n const { t } = useTranslation()\n\n return (\n \n

{error ? t('notFoundError') : t('notFoundTitle')}

\n\n

\n {error || (\n \n This page is not found. Go back to the homepage.\n \n )}\n

\n \n )\n}\n\ninterface NotFoundProps {\n error?: string\n}\n\nexport default NotFound\n","const cache: { [key: string]: any } = {}\n\nexport const getCacheItem = (key: string): T | null | undefined => {\n const value = cache[key] as T\n // console.log(`getCacheItem hit with ${key}`, value)\n return value\n}\n\nexport const setCacheItem = (key: string, value: T) => {\n cache[key] = value\n // console.log(`setCacheItem hit with ${key}`, value)\n}\n","import { getBackend } from './icp'\nimport getDt from './dt'\n\nconst trackWatchTime = async (\n videoId: string,\n watchTime: number,\n watchTimeRate: number,\n) => {\n const start = Date.now()\n // console.log(`trackWatchTime for ${videoId}`)\n\n try {\n const backend = await getBackend()\n const caller = await backend.getCallerInfo()\n const res = await backend.incrementWatchTime(\n videoId,\n caller.isAnonymous(),\n getDt(),\n watchTime,\n watchTimeRate,\n )\n // console.log(`trackWatchTime took ${Date.now() - start}ms`, res)\n } catch (e) {\n console.warn('trackWatchTime failed', e)\n }\n}\n\nexport default trackWatchTime\n","export const intercept_str = (\n str: string,\n startIndex: number,\n endIndex: number,\n) => {\n if (str) {\n const start_str = str.slice(0, startIndex)\n const end_str = str.slice(-endIndex)\n return `${start_str}...${end_str}`\n }\n}\nexport const copy_text = (str: string) => {\n const input = document.createElement('input')\n document.body.appendChild(input)\n input.setAttribute('value', str)\n input.select()\n if (document.execCommand('copy')) {\n document.execCommand('copy')\n // window.alert('Successful replication')\n }\n document.body.removeChild(input)\n}\n","import { FormEvent, useCallback, useEffect, useRef, useState } from 'react'\nimport { Link, useHistory, useParams } from 'react-router-dom'\nimport ReactMarkdown from 'react-markdown'\nimport { LazyImage } from 'react-lazy-images'\nimport Modal from 'react-modal'\nimport moment from 'moment'\nimport {\n IoArrowDown,\n IoArrowUp,\n IoClose,\n IoCodeSlash,\n IoFlagSharp,\n IoFlashOutline,\n IoHeartOutline,\n IoHeartSharp,\n IoShareOutline,\n} from 'react-icons/io5'\nimport slugify from 'slugify'\nimport useMobileDetect from 'use-mobile-detect-hook'\nimport Linkify from 'react-linkify'\nimport { Player, ControlBar, PlaybackRateMenuButton } from 'video-react'\nimport Hls from 'hls.js'\nimport { useWindowHeight } from '@react-hook/window-size'\nimport classnames from 'classnames'\n\n// @ts-ignore\nimport nns_ledgerDid from './nns_ledgerDid'\nimport { ReactComponent as Verified } from '../../assets/verified.svg'\nimport { getBackend, getClientId } from '../../lib/icp'\nimport {\n Comment,\n CommentInfo,\n User,\n Video,\n VideoAndUser,\n UserAndPayment,\n} from '../../types/backend/dsocial/dsocial.did'\nimport { Page, Loading, Button, CachedImage, Logo } from '../../components'\nimport NotFound from '../404'\nimport { ASSET_BASE_URL, FUNCTIONS_URL } from '../../config'\nimport renderNumbers from '../../lib/numbers'\nimport generateProfilePhotoUrl from '../../lib/profilePhoto'\nimport ago from '../../lib/ago'\nimport pages, { generateUrl } from '../../pages'\nimport { useUser, useTranslation, useColorScheme } from '../../hooks'\nimport { getCacheItem, setCacheItem } from '../../lib/cache'\nimport routes from '../../pages'\nimport generateVideoUrl from '../../lib/generateVideoUrl'\n\nimport './Video.scss'\nimport styles from './Video.module.scss'\nimport generateThumbnailUrl from '../../lib/generateThumbnailUrl'\nimport { Helmet } from 'react-helmet'\nimport HlsSource from '../../components/HlsSource'\nimport getDt from '../../lib/dt'\nimport trackClick from '../../lib/trackClick'\nimport TrackImpression from '../../components/TrackImpression'\nimport trackWatchTime from '../../lib/trackWatchTime'\nimport { Tags } from '../../config/tags'\nimport { ColorScheme } from '../../types'\nimport ClipLoader from 'react-spinners/ClipLoader'\n\nimport { intercept_str, copy_text } from '../../utils/common'\n\nModal.setAppElement('#root')\n\nconst SourceTag = (props: any) => \n\nconst linkProperties = { target: '_blank', rel: 'nofollow noopener noreferrer' }\n\nconst convertDurationToSeconds = (duration: string) => {\n const a = duration.split(':') // split it at the colons\n\n if (a.length === 3)\n return (\n parseInt(a[0], 10) * 60 * 60 +\n parseInt(a[1], 10) * 60 +\n parseInt(a[2], 10)\n )\n else if (a.length === 2) return parseInt(a[0], 10) * 60 + parseInt(a[1], 10)\n\n return 0\n}\n\nconst timestampRegex = /[0-5][0-9]:[0-5][0-9]/gim\nconst replaceTimestamps = (a: string) =>\n `[${a}](${window.location.pathname}?s=${convertDurationToSeconds(a)})`\n\nconst copyLink = async (url: string, msg?: string) => {\n try {\n await window.navigator.clipboard.writeText(url)\n window.alert(msg || 'Link copied to the clipboard')\n } catch (e) {\n // do nothing\n }\n}\n\ninterface PayingStatus {\n loadingPrice?: boolean\n usdPrice?: number\n symbol?: string\n commission?: number\n commissionPaid?: boolean\n tip?: number\n tipPaid?: boolean\n}\n\ntype CommentOrPayment = CommentInfo | UserAndPayment\n\nconst TRACK_INTERVAL_IN_MS = 1000\nlet trackInterval: NodeJS.Timeout | null = null\n\nconst Watch = () => {\n const screenHeight = useWindowHeight()\n const detectMobile = useMobileDetect()\n const colorScheme = useColorScheme()\n const { t } = useTranslation()\n const playerRef = useRef()\n const { userData, loggedIn, loading: loadingUser, principal } = useUser()\n const realUser = !loadingUser && loggedIn && !!userData?.id\n const params = new URLSearchParams(window.location.search)\n const secondsStart = params.get('s')\n const embedMode = window.location.pathname.toLowerCase().startsWith('/embed')\n const { videoId } = useParams<{ videoId?: string }>()\n const skipTo =\n secondsStart && !isNaN(Number(secondsStart)) ? Number(secondsStart) : -1\n const history = useHistory()\n const [recommended, setRecommended] = useState([])\n const [modalIsOpen, setModalIsOpen] = useState(false)\n const [paying, setPaying] = useState()\n const [loadingRecommended, setLoadingRecommended] = useState(true)\n const cachedVideo = videoId ? getCacheItem