sidechat.js 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/index.cjs +436 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.mjs +431 -0
  4. package/package.json +18 -13
  5. package/rollup.config.mjs +23 -0
  6. package/tsconfig.json +4 -2
  7. package/dist/sidechat.cjs +0 -2
  8. package/dist/sidechat.cjs.map +0 -1
  9. package/dist/sidechat.modern.js +0 -2
  10. package/dist/sidechat.modern.js.map +0 -1
  11. package/dist/sidechat.module.js +0 -2
  12. package/dist/sidechat.module.js.map +0 -1
  13. package/dist/sidechat.umd.js +0 -2
  14. package/dist/sidechat.umd.js.map +0 -1
  15. package/src/classes/SidechatAPIClient.d.ts +0 -104
  16. package/src/classes/SidechatAPIClient.d.ts.map +0 -1
  17. package/src/classes/SidechatAPIError.d.ts +0 -10
  18. package/src/classes/SidechatAPIError.d.ts.map +0 -1
  19. package/src/index.d.ts.map +0 -1
  20. package/src/types/SidechatTypes.d.ts +0 -224
  21. package/src/types/SidechatTypes.d.ts.map +0 -1
  22. /package/{src/index.d.ts → dist/index.d.mts} +0 -0
  23. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/SidechatAPIClient.html +0 -0
  24. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/SidechatAPIError.html +0 -0
  25. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/classes_SidechatAPIClient.js.html +0 -0
  26. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/classes_SidechatAPIError.js.html +0 -0
  27. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/data/search.json +0 -0
  28. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/fonts/Inconsolata-Regular.ttf +0 -0
  29. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/fonts/OpenSans-Regular.ttf +0 -0
  30. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/fonts/WorkSans-Bold.ttf +0 -0
  31. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/global.html +0 -0
  32. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/index.html +0 -0
  33. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/core.js +0 -0
  34. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/core.min.js +0 -0
  35. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/resize.js +0 -0
  36. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/search.js +0 -0
  37. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/search.min.js +0 -0
  38. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/third-party/Apache-License-2.0.txt +0 -0
  39. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/third-party/fuse.js +0 -0
  40. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/third-party/hljs-line-num-original.js +0 -0
  41. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/third-party/hljs-line-num.js +0 -0
  42. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/third-party/hljs-original.js +0 -0
  43. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/third-party/hljs.js +0 -0
  44. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/third-party/popper.js +0 -0
  45. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/third-party/tippy.js +0 -0
  46. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/third-party/tocbot.js +0 -0
  47. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/scripts/third-party/tocbot.min.js +0 -0
  48. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/styles/clean-jsdoc-theme-base.css +0 -0
  49. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/styles/clean-jsdoc-theme-dark.css +0 -0
  50. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/styles/clean-jsdoc-theme-light.css +0 -0
  51. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/styles/clean-jsdoc-theme.min.css +0 -0
  52. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/tutorial-Authentication.html +0 -0
  53. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/tutorial-Email Registration.html +0 -0
  54. /package/docs/sidechat.js/{2.0.0 → 2.0.4}/types_SidechatTypes.js.html +0 -0
@@ -1,2 +0,0 @@
1
- function e(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(e=function(){return!!t})()}function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},t.apply(this,arguments)}function r(e){return r=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},r(e)}function o(e,t){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},o(e,t)}function n(t){var i="function"==typeof Map?new Map:void 0;return n=function(t){if(null===t||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==i){if(i.has(t))return i.get(t);i.set(t,n)}function n(){return function(t,r,n){if(e())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,r);var s=new(t.bind.apply(t,i));return n&&o(s,n.prototype),s}(t,arguments,r(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),o(n,t)},n(t)}var i=/*#__PURE__*/function(e){var t,r;function n(t){var r;return(r=e.call(this,t)||this).name="SidechatAPIError",r}return r=e,(t=n).prototype=Object.create(r.prototype),t.prototype.constructor=t,o(t,r),n}(/*#__PURE__*/n(Error));function s(e,t){try{var r=e()}catch(e){return t(e)}return r&&r.then?r.then(void 0,t):r}var u=function(e){var r=this,o=this,n=this,u=this,c=this,a=this,h=this,f=this,l=this,d=this,p=this,v=this;void 0===e&&(e=""),this.defaultHeaders={Accept:"application/json","Content-Type":"application/json"},this.setToken=function(e){v.userToken=e},this.loginViaSMS=function(e){try{return Promise.resolve(s(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/login_register",{method:"POST",headers:r.defaultHeaders,body:JSON.stringify({phone_number:"+1"+e,version:3})})).then(function(e){return Promise.resolve(e.json())})},function(e){throw console.error(e),new i("Failed to request SMS verification.")}))}catch(e){return Promise.reject(e)}},this.verifySMSCode=function(e,t){try{return Promise.resolve(s(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/verify_phone_number",{method:"POST",headers:o.defaultHeaders,body:JSON.stringify({phone_number:"+1"+e,code:t.toUpperCase()})})).then(function(e){return Promise.resolve(e.json()).then(function(e){var t;return null!=e&&null!=(t=e.logged_in_user)&&t.token&&(o.userToken=e.logged_in_user.token),e})})},function(e){throw console.error(e),new i("Failed verify this code.")}))}catch(e){return Promise.reject(e)}},this.setAge=function(e,t){try{if(e<13)throw new i("You're too young to use Offsides.");return Promise.resolve(s(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/complete_registration",{method:"POST",headers:n.defaultHeaders,body:JSON.stringify({age:Number(e),registration_id:t})})).then(function(e){return Promise.resolve(e.json()).then(function(e){return e.token&&(n.userToken=e.token),e})})},function(e){throw console.error(e),new i("Failed verify this code.")}))}catch(e){return Promise.reject(e)}},this.registerEmail=function(e){try{if(!u.userToken)throw new i("User is not authenticated.");return Promise.resolve(s(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v2/users/register_email",{method:"POST",headers:t({},u.defaultHeaders,{Authorization:"Bearer "+u.userToken}),body:JSON.stringify({email:e})})).then(function(e){return Promise.resolve(e.json()).then(function(e){if(e.message)throw new i(e.message);return e})})},function(){throw console.error(error),new i("Failed to request email verification.")}))}catch(e){return Promise.reject(e)}},this.checkEmailVerification=function(){try{if(!c.userToken)throw new i("User is not authenticated.");return Promise.resolve(s(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/users/check_email_verified",{method:"GET",headers:t({},c.defaultHeaders,{Authorization:"Bearer "+c.userToken})})).then(function(e){return Promise.resolve(e.json()).then(function(e){if(e.verified_email_updates_response)return e.verified_email_updates_response;throw new i((null==e?void 0:e.message)||"Email is not verified.")})})},function(){throw console.error(error),new i("Email is not verified.")}))}catch(e){return Promise.reject(e)}},this.setDeviceID=function(e){try{if(!a.userToken)throw new i("User is not authenticated.");return Promise.resolve(s(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/register_device_token",{method:"POST",headers:t({},a.defaultHeaders,{Authorization:"Bearer "+a.userToken}),body:JSON.stringify({build_type:"release",bundle_id:"com.flowerave.sidechat",device_token:e})})).then(function(t){return Promise.resolve(t.json()).then(function(t){return Promise.resolve(AsyncStorage.setItem("deviceID",e)).then(function(){return t})})})},function(e){throw console.error(e),new i("Failed verify this code.")}))}catch(e){return Promise.reject(e)}},this.getUserAndGroup=function(e){void 0===e&&(e="");try{if(!h.userToken)throw new i("User is not authenticated.");return Promise.resolve(s(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/updates?group_id="+e,{method:"GET",headers:t({},h.defaultHeaders,{Authorization:"Bearer "+h.userToken})})).then(function(e){return Promise.resolve(e.json())})},function(e){throw console.error(e),new i("Failed to get posts from group.")}))}catch(e){return Promise.reject(e)}},this.getGroupPosts=function(e,r,o){void 0===r&&(r="hot");try{if(!f.userToken)throw new i("User is not authenticated.");return Promise.resolve(s(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/posts?group_id="+e+"&type="+r+(o?"&cursor="+o:""),{method:"GET",headers:t({},f.defaultHeaders,{Authorization:"Bearer "+f.userToken})})).then(function(e){return Promise.resolve(e.json())})},function(e){throw console.error(e),new i("Failed to get posts from group.")}))}catch(e){return Promise.reject(e)}},this.setVote=function(e,r){try{if(!l.userToken)throw new i("User is not authenticated.");return Promise.resolve(s(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/posts/set_vote",{method:"POST",headers:t({},l.defaultHeaders,{Authorization:"Bearer "+l.userToken}),body:JSON.stringify({post_id:e,vote_status:r})})).then(function(e){return Promise.resolve(e.json())})},function(e){throw console.error(e),new i("Failed to change the vote on post.")}))}catch(e){return Promise.reject(e)}},this.getPostComments=function(e){try{if(!d.userToken)throw new i("User is not authenticated.");return Promise.resolve(s(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/posts/comments/?post_id="+e,{method:"GET",headers:t({},d.defaultHeaders,{Authorization:"Bearer "+d.userToken})})).then(function(e){function t(e){var t=new Map,o=[];return e.forEach(function(e){t.set(e.id,e);var r=t.get(e.reply_post_id);r&&e.reply_post_id!==e.parent_post_id?(r.replies||(r.replies=[]),r.replies.push(e)):o.push(e)}),r(o)}function r(e){return e.reduce(function(e,t){return e.push(t),t.replies&&e.push.apply(e,r(t.replies)),e},[])}return Promise.resolve(e.json()).then(function(e){return t(e.posts)})})},function(e){throw console.error(e),new i("Failed to get comments on post.")}))}catch(e){return Promise.reject(e)}},this.getAvailableGroups=function(){try{if(!p.userToken)throw new i("User is not authenticated.");return Promise.resolve(s(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/groups/explore",{method:"GET",headers:t({},p.defaultHeaders,{Authorization:"Bearer "+p.userToken})})).then(function(e){return Promise.resolve(e.json()).then(function(e){return Promise.resolve(e.groups)})})},function(e){throw console.error(e),new i("Failed to get groups from explore.")}))}catch(e){return Promise.reject(e)}},e&&(this.userToken=e)};export{u as SidechatAPIClient,i as SidechatAPIError};
2
- //# sourceMappingURL=sidechat.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidechat.module.js","sources":["../src/classes/SidechatAPIError.js","../src/classes/SidechatAPIClient.js"],"sourcesContent":["/**\r\n * Throwable error caused by the Sidechat API\r\n * @class\r\n * @extends Error\r\n */\r\nclass SidechatAPIError extends Error {\r\n constructor(message) {\r\n super(message);\r\n this.name = \"SidechatAPIError\";\r\n }\r\n}\r\n\r\nexport default SidechatAPIError;\r\n","import \"../types/SidechatTypes.js\";\r\nimport SidechatAPIError from \"../classes/SidechatAPIError.js\";\r\n\r\n/**\r\n * API client class for making requests to Sidechat's private API. You'll need to [authenticate]{@tutorial Authentication} before using most of the methods.\r\n * @class\r\n * @since 2.0.0-alpha.0\r\n */\r\nclass SidechatAPIClient {\r\n /**\r\n * User bearer token\r\n * @type {SidechatAuthToken}\r\n * */\r\n userToken;\r\n /**\r\n * Default headers for every API request\r\n * @type {Object}\r\n * @static\r\n */\r\n defaultHeaders = {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n };\r\n\r\n /**\r\n * Create a new instance of the API client\r\n * @param {SidechatAuthToken} [token] - user bearer token\r\n */\r\n constructor(token = \"\") {\r\n if (token) {\r\n this.userToken = token;\r\n }\r\n }\r\n\r\n /**\r\n * Manually set the currently signed in user's token. Generally try to avoid this and instead either pass a token to the constructor or login automatically through the auth functions\r\n * @method\r\n * @param {SidechatAuthToken} token - user bearer token\r\n */\r\n setToken = (token) => {\r\n this.userToken = token;\r\n };\r\n\r\n /**\r\n * Initiate the login process with a phone number. Should be followed up with verifySMSCode().\r\n * @method\r\n * @param {Number} phoneNumber - US phone number (WITHOUT +1) to send verification code to\r\n */\r\n loginViaSMS = async (phoneNumber) => {\r\n try {\r\n const res = await fetch(`https://api.sidechat.lol/v1/login_register`, {\r\n method: \"POST\",\r\n headers: this.defaultHeaders,\r\n body: JSON.stringify({\r\n phone_number: `+1${phoneNumber}`,\r\n version: 3,\r\n }),\r\n });\r\n const json = await res.json();\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(\"Failed to request SMS verification.\");\r\n }\r\n };\r\n\r\n /**\r\n * Verify the code sent via SMS with loginViaSMS().\r\n * @method\r\n * @param {Number} phoneNumber - US phone number (WITHOUT +1) that verification code was sent to\r\n * @param {String} code - the verification code\r\n */\r\n verifySMSCode = async (phoneNumber, code) => {\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/verify_phone_number`,\r\n {\r\n method: \"POST\",\r\n headers: this.defaultHeaders,\r\n body: JSON.stringify({\r\n phone_number: `+1${phoneNumber}`,\r\n code: code.toUpperCase(),\r\n }),\r\n }\r\n );\r\n const json = await res.json();\r\n if (json?.logged_in_user?.token) {\r\n this.userToken = json.logged_in_user.token;\r\n }\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(\"Failed verify this code.\");\r\n }\r\n };\r\n\r\n /**\r\n * Set the user's age\r\n * @method\r\n * @param {Number} age - user's age in years\r\n * @param {String} registrationID - the registration ID generated by verifySMSCode()\r\n */\r\n setAge = async (age, registrationID) => {\r\n if (age < 13) {\r\n throw new SidechatAPIError(\"You're too young to use Offsides.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/complete_registration`,\r\n {\r\n method: \"POST\",\r\n headers: this.defaultHeaders,\r\n body: JSON.stringify({\r\n age: Number(age),\r\n registration_id: registrationID,\r\n }),\r\n }\r\n );\r\n const json = await res.json();\r\n if (json.token) {\r\n this.userToken = json.token;\r\n }\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(\"Failed verify this code.\");\r\n }\r\n };\r\n\r\n /**\r\n * Initiate the email setup process. Should be followed up with checkEmailVerification().\r\n * @method\r\n * @param {String} email - school email address to send verification code to\r\n * @tutorial Email Registration\r\n */\r\n registerEmail = async (email) => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v2/users/register_email`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n body: JSON.stringify({\r\n email: email,\r\n }),\r\n }\r\n );\r\n const json = await res.json();\r\n if (json.message) {\r\n throw new SidechatAPIError(json.message);\r\n }\r\n return json;\r\n } catch (err) {\r\n console.error(error);\r\n throw new SidechatAPIError(\"Failed to request email verification.\");\r\n }\r\n };\r\n\r\n /**\r\n * Check is the user's email is verified.\r\n * @method\r\n */\r\n checkEmailVerification = async () => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/users/check_email_verified`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n }\r\n );\r\n const json = await res.json();\r\n if (json.verified_email_updates_response) {\r\n return json.verified_email_updates_response;\r\n } else {\r\n throw new SidechatAPIError(json?.message || \"Email is not verified.\");\r\n }\r\n } catch (err) {\r\n console.error(error);\r\n throw new SidechatAPIError(\"Email is not verified.\");\r\n }\r\n };\r\n\r\n /**\r\n * Set the device ID of the current user\r\n * @method\r\n * @param {String} deviceId - the device ID to set\r\n */\r\n setDeviceID = async (deviceID) => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/register_device_token`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n body: JSON.stringify({\r\n build_type: \"release\",\r\n bundle_id: \"com.flowerave.sidechat\",\r\n device_token: deviceID,\r\n }),\r\n }\r\n );\r\n const json = await res.json();\r\n await AsyncStorage.setItem(\"deviceID\", deviceID);\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(\"Failed verify this code.\");\r\n }\r\n };\r\n\r\n /**\r\n * Get updated status for user and group\r\n * @method\r\n * @param {String} [groupID] - ID of a specific group to retrieve info from\r\n */\r\n getUserAndGroup = async (groupID = \"\") => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/updates?group_id=${groupID}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n }\r\n );\r\n const json = await res.json();\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(`Failed to get posts from group.`);\r\n }\r\n };\r\n\r\n /**\r\n * Fetches posts from the specified category in a group\r\n * @method\r\n * @param {String} groupID - group ID\r\n * @param {\"hot\"|\"recent\"|\"top\"} category - category to filter posts\r\n * @param {SidechatCursorString} [cursor] - cursor string\r\n * @returns {SidechatPostsAndCursor} List of posts and cursor\r\n */\r\n getGroupPosts = async (groupID, category = \"hot\", cursor) => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/posts?group_id=${groupID}&type=${category}${\r\n cursor ? \"&cursor=\" + cursor : \"\"\r\n }`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n }\r\n );\r\n const json = await res.json();\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(`Failed to get posts from group.`);\r\n }\r\n };\r\n\r\n /**\r\n * Upvote or downvote, or unvote a post\r\n * @method\r\n * @param {String} postID - post ID to vote on\r\n * @param {SidechatVoteString} action - whether to upvote, downvote, or reset vote\r\n */\r\n setVote = async (postID, action) => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(`https://api.sidechat.lol/v1/posts/set_vote`, {\r\n method: \"POST\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n body: JSON.stringify({\r\n post_id: postID,\r\n vote_status: action,\r\n }),\r\n });\r\n const json = await res.json();\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(`Failed to change the vote on post.`);\r\n }\r\n };\r\n\r\n /**\r\n * Get all the commments on a post\r\n * @method\r\n * @param {String} postID - post ID to get comments for\r\n * @returns {SidechatPostOrComment[]} list of comments\r\n */\r\n getPostComments = async (postID) => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/posts/comments/?post_id=${postID}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n }\r\n );\r\n const json = await res.json();\r\n // Function to preprocess the comments and organize them into a nested structure\r\n function preprocessComments(apiComments) {\r\n // Map to store comments by their IDs for efficient lookup\r\n const commentMap = new Map();\r\n // List to store top-level comments\r\n const topLevelComments = [];\r\n\r\n // Iterate through the API comments\r\n apiComments.forEach((comment) => {\r\n // Store the comment in the map with its ID as the key\r\n commentMap.set(comment.id, comment);\r\n // Get the parent comment using the reply_post_id\r\n const parentComment = commentMap.get(comment.reply_post_id);\r\n // Check if the comment is a top-level comment\r\n if (\r\n !parentComment ||\r\n comment.reply_post_id === comment.parent_post_id\r\n ) {\r\n // If it's a top-level comment, push it to the topLevelComments array\r\n topLevelComments.push(comment);\r\n } else {\r\n // If it's a reply, add it to the parent comment's replies array\r\n if (!parentComment.replies) parentComment.replies = [];\r\n parentComment.replies.push(comment);\r\n }\r\n });\r\n\r\n // Flatten the nested structure and return a single list of comments\r\n return flattenComments(topLevelComments);\r\n }\r\n\r\n // Function to flatten nested comments into a single list\r\n function flattenComments(comments) {\r\n // Use reduce to flatten the nested comments array into a single list\r\n return comments.reduce((flatComments, comment) => {\r\n // Push the current comment to the flatComments array\r\n flatComments.push(comment);\r\n // If the current comment has replies, recursively flatten them and push to the flatComments array\r\n if (comment.replies)\r\n flatComments.push(...flattenComments(comment.replies));\r\n // Return the flatComments array\r\n return flatComments;\r\n }, []);\r\n }\r\n\r\n const sortedComments = preprocessComments(json.posts);\r\n return sortedComments;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(`Failed to get comments on post.`);\r\n }\r\n };\r\n\r\n /**\r\n * Gets groups to be displayed on the \"Explore Groups\" page\r\n * @method\r\n * @returns {SidechatGroup[]}\r\n */\r\n getAvailableGroups = async () => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(`https://api.sidechat.lol/v1/groups/explore`, {\r\n method: \"GET\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n });\r\n const json = await res.json();\r\n return await json.groups;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(`Failed to get groups from explore.`);\r\n }\r\n };\r\n}\r\n\r\nexport default SidechatAPIClient;\r\n"],"names":["SidechatAPIError","_Error","message","_this","call","name","_wrapNativeSuper","Error","_catch","body","recover","result","e","then","SidechatAPIClient","token","_this2","this","_this3","_this4","_this5","_this6","_this7","_this8","_this9","_this10","_this11","_this12","defaultHeaders","Accept","setToken","userToken","loginViaSMS","phoneNumber","Promise","resolve","fetch","method","headers","JSON","stringify","phone_number","version","res","json","err","console","error","reject","verifySMSCode","code","toUpperCase","_json$logged_in_user","logged_in_user","setAge","age","registrationID","Number","registration_id","registerEmail","email","_extends","Authorization","checkEmailVerification","verified_email_updates_response","setDeviceID","deviceID","build_type","bundle_id","device_token","AsyncStorage","setItem","getUserAndGroup","groupID","getGroupPosts","category","cursor","setVote","postID","action","post_id","vote_status","getPostComments","preprocessComments","apiComments","commentMap","Map","topLevelComments","forEach","comment","set","id","parentComment","get","reply_post_id","parent_post_id","replies","push","flattenComments","comments","reduce","flatComments","apply","posts","getAvailableGroups","groups"],"mappings":"4zCAKM,IAAAA,wBAAgBC,WACpB,SAAAD,EAAYE,GAASC,IAAAA,EAEY,OAD/BA,EAAAF,EAAAG,UAAMF,UACDG,KAAO,mBAAmBF,CACjC,CAAC,SAJmBF,KAAAD,yEAInBA,CAAA,eAAAM,EAJ4BC,QC6iBxB,SAASC,EAAOC,EAAMC,GAC5B,IACC,IAAIC,EAASF,GACd,CAAE,MAAMG,GACP,OAAOF,EAAQE,EAChB,CACA,OAAID,GAAUA,EAAOE,KACbF,EAAOE,UAAK,EAAQH,GAErBC,CACR,CApjBM,IAAAG,EAoBJ,SAAYC,GAAYC,IAAAA,EAwBTC,KAAIC,EA0BFD,KAAIE,EAiCJF,KAAIG,EAyBdH,KAAII,EAiCJJ,KAAIK,EAgCJL,KAAIM,EAkCJN,KAAIO,EA+BJP,KAAIQ,EA+BJR,KAAIS,EA8BJT,KAAIU,EA0EJV,KAAId,EArXCY,cAAAA,IAAAA,EAAQ,IATpBa,KAAAA,eAAiB,CACfC,OAAQ,mBACR,eAAgB,yBAkBlBC,SAAW,SAACf,GACVZ,EAAK4B,UAAYhB,CACnB,OAOAiB,YAAW,SAAUC,GAAW,IAAKC,OAAAA,QAAAC,QAAA3B,EAC/B,WAAA,OAAA0B,QAAAC,QACgBC,MAAoD,6CAAA,CACpEC,OAAQ,OACRC,QAAStB,EAAKY,eACdnB,KAAM8B,KAAKC,UAAU,CACnBC,aAAY,KAAOR,EACnBS,QAAS,OAEX7B,KAAA,SAPI8B,GAAG,OAAAT,QAAAC,QAQUQ,EAAIC,OAAM,EAE/B,EAASC,SAAAA,GAEP,MADAC,QAAQC,MAAMF,OACJ7C,EAAiB,sCAC7B,GACF,CAAC,MAAAY,GAAAsB,OAAAA,QAAAc,OAAApC,EAQDqC,CAAAA,EAAAA,KAAAA,cAAuBhB,SAAAA,EAAaiB,OAAShB,OAAAA,QAAAC,QAAA3B,EACvC,WAAA,OAAA0B,QAAAC,QACgBC,MAEhB,kDAAA,CACEC,OAAQ,OACRC,QAASpB,EAAKU,eACdnB,KAAM8B,KAAKC,UAAU,CACnBC,aAAY,KAAOR,EACnBiB,KAAMA,EAAKC,mBAGhBtC,KAVK8B,SAAAA,UAAGT,QAAAC,QAWUQ,EAAIC,QAAM/B,KAAvB+B,SAAAA,OAAIQ,EAIV,OAHQ,MAAJR,GAAAQ,OAAIA,EAAJR,EAAMS,iBAAND,EAAsBrC,QACxBG,EAAKa,UAAYa,EAAKS,eAAetC,OAEhC6B,CAAK,EACd,EAAA,WAASC,GAEP,MADAC,QAAQC,MAAMF,GACR,IAAI7C,EAAiB,2BAC7B,GACF,CAAC,MAAAY,UAAAsB,QAAAc,OAAApC,EAQD0C,CAAAA,EAAAA,KAAAA,OAAgBC,SAAAA,EAAKC,GAAc,IACjC,GAAID,EAAM,GACR,MAAU,IAAAvD,EAAiB,qCAC5B,OAAAkC,QAAAC,QAAA3B,EACG,WAAA,OAAA0B,QAAAC,QACgBC,MAEhB,oDAAA,CACEC,OAAQ,OACRC,QAASnB,EAAKS,eACdnB,KAAM8B,KAAKC,UAAU,CACnBe,IAAKE,OAAOF,GACZG,gBAAiBF,OAGtB3C,cAVK8B,GAAG,OAAAT,QAAAC,QAWUQ,EAAIC,QAAM/B,KAAvB+B,SAAAA,GAIN,OAHIA,EAAK7B,QACPI,EAAKY,UAAYa,EAAK7B,OAEjB6B,CAAK,EAAA,EACd,EAAC,SAAQC,GAEP,MADAC,QAAQC,MAAMF,GACJ,IAAA7C,EAAiB,2BAC7B,GACF,CAAC,MAAAY,GAAAsB,OAAAA,QAAAc,OAAApC,UAQD+C,cAAa,SAAUC,GAAU,IAC/B,IAAKxC,EAAKW,UACR,MAAU,IAAA/B,EAAiB,8BAC5B,OAAAkC,QAAAC,QAAA3B,EACG,WAAA,OAAA0B,QAAAC,QACgBC,MAAK,mDAErB,CACEC,OAAQ,OACRC,QAAOuB,EACFzC,CAAAA,EAAAA,EAAKQ,eAAc,CACtBkC,cAAa,UAAY1C,EAAKW,YAEhCtB,KAAM8B,KAAKC,UAAU,CACnBoB,MAAOA,OAGZ/C,cAZK8B,GAAG,OAAAT,QAAAC,QAaUQ,EAAIC,QAAM/B,KAAvB+B,SAAAA,GACN,GAAIA,EAAK1C,QACP,MAAU,IAAAF,EAAiB4C,EAAK1C,SAElC,OAAO0C,CAAK,EACd,EAAA,EAAc,WAEZ,MADAE,QAAQC,MAAMA,OACJ,IAAA/C,EAAiB,wCAC7B,GACF,CAAC,MAAAY,GAAA,OAAAsB,QAAAc,OAAApC,EAAA,CAAA,EAAAK,KAMD8C,uBAAqC,WAAA,IACnC,IAAK1C,EAAKU,UACR,MAAU,IAAA/B,EAAiB,8BAC5B,OAAAkC,QAAAC,QAAA3B,EACG,WAAA,OAAA0B,QAAAC,QACgBC,MAEhB,yDAAA,CACEC,OAAQ,MACRC,QAAOuB,EACFxC,CAAAA,EAAAA,EAAKO,eACRkC,CAAAA,wBAAyBzC,EAAKU,eAGnClB,KATK8B,SAAAA,GAAGT,OAAAA,QAAAC,QAUUQ,EAAIC,QAAM/B,KAAA,SAAvB+B,GAAI,GACNA,EAAKoB,gCACP,OAAOpB,EAAKoB,gCAEZ,MAAM,IAAIhE,SAAiB4C,SAAAA,EAAM1C,UAAW,yBAA0B,EAAA,EAE1E,EAAC,WAEC,MADA4C,QAAQC,MAAMA,OACJ,IAAA/C,EAAiB,yBAC7B,GACF,CAAC,MAAAY,GAAAsB,OAAAA,QAAAc,OAAApC,UAODqD,YAAW,SAAUC,GAAa,IAChC,IAAK5C,EAAKS,UACR,MAAU,IAAA/B,EAAiB,8BAC5B,OAAAkC,QAAAC,QAAA3B,EACG,WAAA,OAAA0B,QAAAC,QACgBC,MAAK,oDAErB,CACEC,OAAQ,OACRC,QAAOuB,EACFvC,CAAAA,EAAAA,EAAKM,eAAc,CACtBkC,cAAa,UAAYxC,EAAKS,YAEhCtB,KAAM8B,KAAKC,UAAU,CACnB2B,WAAY,UACZC,UAAW,yBACXC,aAAcH,OAGnBrD,cAdK8B,GAAG,OAAAT,QAAAC,QAeUQ,EAAIC,QAAM/B,KAAvB+B,SAAAA,UAAIV,QAAAC,QACJmC,aAAaC,QAAQ,WAAYL,IAASrD,KAAA,WAChD,OAAO+B,CAAK,EACd,EAAA,EAAA,EAASC,SAAAA,GAEP,MADAC,QAAQC,MAAMF,GACR,IAAI7C,EAAiB,2BAC7B,GACF,CAAC,MAAAY,GAAA,OAAAsB,QAAAc,OAAApC,EAOD4D,CAAAA,EAAAA,KAAAA,yBAAyBC,QAAAA,IAAAA,IAAAA,EAAU,IAAO,IACxC,IAAKlD,EAAKQ,UACR,MAAM,IAAI/B,EAAiB,8BAC5B,OAAAkC,QAAAC,QAAA3B,EAAA,WACG0B,OAAAA,QAAAC,QACgBC,MAAK,gDAC2BqC,EAChD,CACEpC,OAAQ,MACRC,QAAOuB,KACFtC,EAAKK,eACRkC,CAAAA,wBAAyBvC,EAAKQ,eAGnClB,KAAA,SATK8B,GAAGT,OAAAA,QAAAC,QAUUQ,EAAIC,OAEzB,EAAA,WAASC,GAEP,MADAC,QAAQC,MAAMF,GACR,IAAI7C,EAAgB,kCAC5B,GACF,CAAC,MAAAY,GAAA,OAAAsB,QAAAc,OAAApC,EAAA,CAAA,EAAAK,KAUDyD,cAAuBD,SAAAA,EAASE,EAAkBC,QAAV,IAARD,IAAAA,EAAW,OAAK,IAC9C,IAAKnD,EAAKO,UACR,MAAM,IAAI/B,EAAiB,8BAC5B,OAAAkC,QAAAC,QAAA3B,EAAA,kBACG0B,QAAAC,QACgBC,MAC8BqC,8CAAAA,EAAgBE,SAAAA,GAC5DC,EAAS,WAAaA,EAAS,IAEjC,CACEvC,OAAQ,MACRC,QAAOuB,EACFrC,CAAAA,EAAAA,EAAKI,eAAc,CACtBkC,cAAa,UAAYtC,EAAKO,eAGnClB,cAXK8B,GAAG,OAAAT,QAAAC,QAYUQ,EAAIC,OAAM,EAE/B,EAASC,SAAAA,GAEP,MADAC,QAAQC,MAAMF,OACJ7C,EAAkD,kCAC9D,GACF,CAAC,MAAAY,GAAAsB,OAAAA,QAAAc,OAAApC,EAAA,CAAA,EAAAK,KAQD4D,QAAO,SAAUC,EAAQC,GAAW,IAClC,IAAKtD,EAAKM,UACR,MAAU,IAAA/B,EAAiB,8BAC5B,OAAAkC,QAAAC,QAAA3B,EACG,WAAA,OAAA0B,QAAAC,QACgBC,MAAK,6CAA+C,CACpEC,OAAQ,OACRC,QAAOuB,EACFpC,CAAAA,EAAAA,EAAKG,eAAc,CACtBkC,cAAyBrC,UAAAA,EAAKM,YAEhCtB,KAAM8B,KAAKC,UAAU,CACnBwC,QAASF,EACTG,YAAaF,OAEflE,KAVI8B,SAAAA,GAAGT,OAAAA,QAAAC,QAWUQ,EAAIC,SAEzB,EAAC,SAAQC,GAEP,MADAC,QAAQC,MAAMF,OACJ7C,EAAqD,qCACjE,GACF,CAAC,MAAAY,UAAAsB,QAAAc,OAAApC,EAQDsE,CAAAA,EAAAA,KAAAA,gBAAyBJ,SAAAA,OACvB,IAAKpD,EAAKK,UACR,MAAM,IAAI/B,EAAiB,8BAC5B,OAAAkC,QAAAC,QAAA3B,EAAA,WACG0B,OAAAA,QAAAC,QACgBC,MACuC0C,uDAAAA,EACvD,CACEzC,OAAQ,MACRC,QAAOuB,EAAA,CAAA,EACFnC,EAAKE,gBACRkC,cAAa,UAAYpC,EAAKK,eAGnClB,KATK8B,SAAAA,GAYN,SAASwC,EAAmBC,GAE1B,IAAMC,EAAa,IAAIC,IAEjBC,EAAmB,GAuBzB,OApBAH,EAAYI,QAAQ,SAACC,GAEnBJ,EAAWK,IAAID,EAAQE,GAAIF,GAE3B,IAAMG,EAAgBP,EAAWQ,IAAIJ,EAAQK,eAG1CF,GACDH,EAAQK,gBAAkBL,EAAQM,gBAM7BH,EAAcI,UAASJ,EAAcI,QAAU,IACpDJ,EAAcI,QAAQC,KAAKR,IAJ3BF,EAAiBU,KAAKR,EAM1B,GAGOS,EAAgBX,EACzB,CAGA,SAASW,EAAgBC,GAEvB,OAAOA,EAASC,OAAO,SAACC,EAAcZ,GAOpC,OALAY,EAAaJ,KAAKR,GAEdA,EAAQO,SACVK,EAAaJ,KAAIK,MAAjBD,EAAqBH,EAAgBT,EAAQO,UAExCK,CACT,EAAG,GACL,CAAC,OAAAnE,QAAAC,QA5CkBQ,EAAIC,QAAM/B,KAAA,SAAvB+B,GA+CN,OADuBuC,EAAmBvC,EAAK2D,MACzB,EACxB,EAAA,WAAS1D,GAEP,MADAC,QAAQC,MAAMF,GACR,IAAI7C,EAAgB,kCAC5B,GACF,CAAC,MAAAY,GAAA,OAAAsB,QAAAc,OAAApC,EAAA,CAAA,EAAAK,KAODuF,mBAAiC,WAAA,IAC/B,IAAK7E,EAAKI,UACR,MAAM,IAAI/B,EAAiB,8BAC5B,OAAAkC,QAAAC,QAAA3B,aACG0B,OAAAA,QAAAC,QACgBC,MAAK,6CAA+C,CACpEC,OAAQ,MACRC,QAAOuB,KACFlC,EAAKC,eAAc,CACtBkC,cAAa,UAAYnC,EAAKI,eAEhClB,KAAA,SANI8B,GAAG,OAAAT,QAAAC,QAOUQ,EAAIC,QAAM/B,KAAvB+B,SAAAA,GAAIV,OAAAA,QAAAC,QACGS,EAAK6D,WACpB,EAAC,SAAQ5D,GAEP,MADAC,QAAQC,MAAMF,GACJ,IAAA7C,EAAgB,qCAC5B,GACF,CAAC,MAAAY,GAAAsB,OAAAA,QAAAc,OAAApC,EAAA,CAAA,EArYKG,IACFE,KAAKc,UAAYhB,EAErB"}
@@ -1,2 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e||self).sidechatJs={})}(this,function(e){function t(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(t=function(){return!!e})()}function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},r.apply(this,arguments)}function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}function n(e,t){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},n(e,t)}function i(e){var r="function"==typeof Map?new Map:void 0;return i=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(e))return r.get(e);r.set(e,i)}function i(){return function(e,r,o){if(t())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,r);var s=new(e.bind.apply(e,i));return o&&n(s,o.prototype),s}(e,arguments,o(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),n(i,e)},i(e)}var s=/*#__PURE__*/function(e){var t,r;function o(t){var r;return(r=e.call(this,t)||this).name="SidechatAPIError",r}return r=e,(t=o).prototype=Object.create(r.prototype),t.prototype.constructor=t,n(t,r),o}(/*#__PURE__*/i(Error));function u(e,t){try{var r=e()}catch(e){return t(e)}return r&&r.then?r.then(void 0,t):r}e.SidechatAPIClient=function(e){var t=this,o=this,n=this,i=this,c=this,a=this,h=this,f=this,l=this,d=this,p=this,v=this;void 0===e&&(e=""),this.defaultHeaders={Accept:"application/json","Content-Type":"application/json"},this.setToken=function(e){v.userToken=e},this.loginViaSMS=function(e){try{return Promise.resolve(u(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/login_register",{method:"POST",headers:t.defaultHeaders,body:JSON.stringify({phone_number:"+1"+e,version:3})})).then(function(e){return Promise.resolve(e.json())})},function(e){throw console.error(e),new s("Failed to request SMS verification.")}))}catch(e){return Promise.reject(e)}},this.verifySMSCode=function(e,t){try{return Promise.resolve(u(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/verify_phone_number",{method:"POST",headers:o.defaultHeaders,body:JSON.stringify({phone_number:"+1"+e,code:t.toUpperCase()})})).then(function(e){return Promise.resolve(e.json()).then(function(e){var t;return null!=e&&null!=(t=e.logged_in_user)&&t.token&&(o.userToken=e.logged_in_user.token),e})})},function(e){throw console.error(e),new s("Failed verify this code.")}))}catch(e){return Promise.reject(e)}},this.setAge=function(e,t){try{if(e<13)throw new s("You're too young to use Offsides.");return Promise.resolve(u(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/complete_registration",{method:"POST",headers:n.defaultHeaders,body:JSON.stringify({age:Number(e),registration_id:t})})).then(function(e){return Promise.resolve(e.json()).then(function(e){return e.token&&(n.userToken=e.token),e})})},function(e){throw console.error(e),new s("Failed verify this code.")}))}catch(e){return Promise.reject(e)}},this.registerEmail=function(e){try{if(!i.userToken)throw new s("User is not authenticated.");return Promise.resolve(u(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v2/users/register_email",{method:"POST",headers:r({},i.defaultHeaders,{Authorization:"Bearer "+i.userToken}),body:JSON.stringify({email:e})})).then(function(e){return Promise.resolve(e.json()).then(function(e){if(e.message)throw new s(e.message);return e})})},function(){throw console.error(error),new s("Failed to request email verification.")}))}catch(e){return Promise.reject(e)}},this.checkEmailVerification=function(){try{if(!c.userToken)throw new s("User is not authenticated.");return Promise.resolve(u(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/users/check_email_verified",{method:"GET",headers:r({},c.defaultHeaders,{Authorization:"Bearer "+c.userToken})})).then(function(e){return Promise.resolve(e.json()).then(function(e){if(e.verified_email_updates_response)return e.verified_email_updates_response;throw new s((null==e?void 0:e.message)||"Email is not verified.")})})},function(){throw console.error(error),new s("Email is not verified.")}))}catch(e){return Promise.reject(e)}},this.setDeviceID=function(e){try{if(!a.userToken)throw new s("User is not authenticated.");return Promise.resolve(u(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/register_device_token",{method:"POST",headers:r({},a.defaultHeaders,{Authorization:"Bearer "+a.userToken}),body:JSON.stringify({build_type:"release",bundle_id:"com.flowerave.sidechat",device_token:e})})).then(function(t){return Promise.resolve(t.json()).then(function(t){return Promise.resolve(AsyncStorage.setItem("deviceID",e)).then(function(){return t})})})},function(e){throw console.error(e),new s("Failed verify this code.")}))}catch(e){return Promise.reject(e)}},this.getUserAndGroup=function(e){void 0===e&&(e="");try{if(!h.userToken)throw new s("User is not authenticated.");return Promise.resolve(u(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/updates?group_id="+e,{method:"GET",headers:r({},h.defaultHeaders,{Authorization:"Bearer "+h.userToken})})).then(function(e){return Promise.resolve(e.json())})},function(e){throw console.error(e),new s("Failed to get posts from group.")}))}catch(e){return Promise.reject(e)}},this.getGroupPosts=function(e,t,o){void 0===t&&(t="hot");try{if(!f.userToken)throw new s("User is not authenticated.");return Promise.resolve(u(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/posts?group_id="+e+"&type="+t+(o?"&cursor="+o:""),{method:"GET",headers:r({},f.defaultHeaders,{Authorization:"Bearer "+f.userToken})})).then(function(e){return Promise.resolve(e.json())})},function(e){throw console.error(e),new s("Failed to get posts from group.")}))}catch(e){return Promise.reject(e)}},this.setVote=function(e,t){try{if(!l.userToken)throw new s("User is not authenticated.");return Promise.resolve(u(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/posts/set_vote",{method:"POST",headers:r({},l.defaultHeaders,{Authorization:"Bearer "+l.userToken}),body:JSON.stringify({post_id:e,vote_status:t})})).then(function(e){return Promise.resolve(e.json())})},function(e){throw console.error(e),new s("Failed to change the vote on post.")}))}catch(e){return Promise.reject(e)}},this.getPostComments=function(e){try{if(!d.userToken)throw new s("User is not authenticated.");return Promise.resolve(u(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/posts/comments/?post_id="+e,{method:"GET",headers:r({},d.defaultHeaders,{Authorization:"Bearer "+d.userToken})})).then(function(e){function t(e){var t=new Map,o=[];return e.forEach(function(e){t.set(e.id,e);var r=t.get(e.reply_post_id);r&&e.reply_post_id!==e.parent_post_id?(r.replies||(r.replies=[]),r.replies.push(e)):o.push(e)}),r(o)}function r(e){return e.reduce(function(e,t){return e.push(t),t.replies&&e.push.apply(e,r(t.replies)),e},[])}return Promise.resolve(e.json()).then(function(e){return t(e.posts)})})},function(e){throw console.error(e),new s("Failed to get comments on post.")}))}catch(e){return Promise.reject(e)}},this.getAvailableGroups=function(){try{if(!p.userToken)throw new s("User is not authenticated.");return Promise.resolve(u(function(){return Promise.resolve(fetch("https://api.sidechat.lol/v1/groups/explore",{method:"GET",headers:r({},p.defaultHeaders,{Authorization:"Bearer "+p.userToken})})).then(function(e){return Promise.resolve(e.json()).then(function(e){return Promise.resolve(e.groups)})})},function(e){throw console.error(e),new s("Failed to get groups from explore.")}))}catch(e){return Promise.reject(e)}},e&&(this.userToken=e)},e.SidechatAPIError=s});
2
- //# sourceMappingURL=sidechat.umd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidechat.umd.js","sources":["../src/classes/SidechatAPIError.js","../src/classes/SidechatAPIClient.js"],"sourcesContent":["/**\r\n * Throwable error caused by the Sidechat API\r\n * @class\r\n * @extends Error\r\n */\r\nclass SidechatAPIError extends Error {\r\n constructor(message) {\r\n super(message);\r\n this.name = \"SidechatAPIError\";\r\n }\r\n}\r\n\r\nexport default SidechatAPIError;\r\n","import \"../types/SidechatTypes.js\";\r\nimport SidechatAPIError from \"../classes/SidechatAPIError.js\";\r\n\r\n/**\r\n * API client class for making requests to Sidechat's private API. You'll need to [authenticate]{@tutorial Authentication} before using most of the methods.\r\n * @class\r\n * @since 2.0.0-alpha.0\r\n */\r\nclass SidechatAPIClient {\r\n /**\r\n * User bearer token\r\n * @type {SidechatAuthToken}\r\n * */\r\n userToken;\r\n /**\r\n * Default headers for every API request\r\n * @type {Object}\r\n * @static\r\n */\r\n defaultHeaders = {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n };\r\n\r\n /**\r\n * Create a new instance of the API client\r\n * @param {SidechatAuthToken} [token] - user bearer token\r\n */\r\n constructor(token = \"\") {\r\n if (token) {\r\n this.userToken = token;\r\n }\r\n }\r\n\r\n /**\r\n * Manually set the currently signed in user's token. Generally try to avoid this and instead either pass a token to the constructor or login automatically through the auth functions\r\n * @method\r\n * @param {SidechatAuthToken} token - user bearer token\r\n */\r\n setToken = (token) => {\r\n this.userToken = token;\r\n };\r\n\r\n /**\r\n * Initiate the login process with a phone number. Should be followed up with verifySMSCode().\r\n * @method\r\n * @param {Number} phoneNumber - US phone number (WITHOUT +1) to send verification code to\r\n */\r\n loginViaSMS = async (phoneNumber) => {\r\n try {\r\n const res = await fetch(`https://api.sidechat.lol/v1/login_register`, {\r\n method: \"POST\",\r\n headers: this.defaultHeaders,\r\n body: JSON.stringify({\r\n phone_number: `+1${phoneNumber}`,\r\n version: 3,\r\n }),\r\n });\r\n const json = await res.json();\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(\"Failed to request SMS verification.\");\r\n }\r\n };\r\n\r\n /**\r\n * Verify the code sent via SMS with loginViaSMS().\r\n * @method\r\n * @param {Number} phoneNumber - US phone number (WITHOUT +1) that verification code was sent to\r\n * @param {String} code - the verification code\r\n */\r\n verifySMSCode = async (phoneNumber, code) => {\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/verify_phone_number`,\r\n {\r\n method: \"POST\",\r\n headers: this.defaultHeaders,\r\n body: JSON.stringify({\r\n phone_number: `+1${phoneNumber}`,\r\n code: code.toUpperCase(),\r\n }),\r\n }\r\n );\r\n const json = await res.json();\r\n if (json?.logged_in_user?.token) {\r\n this.userToken = json.logged_in_user.token;\r\n }\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(\"Failed verify this code.\");\r\n }\r\n };\r\n\r\n /**\r\n * Set the user's age\r\n * @method\r\n * @param {Number} age - user's age in years\r\n * @param {String} registrationID - the registration ID generated by verifySMSCode()\r\n */\r\n setAge = async (age, registrationID) => {\r\n if (age < 13) {\r\n throw new SidechatAPIError(\"You're too young to use Offsides.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/complete_registration`,\r\n {\r\n method: \"POST\",\r\n headers: this.defaultHeaders,\r\n body: JSON.stringify({\r\n age: Number(age),\r\n registration_id: registrationID,\r\n }),\r\n }\r\n );\r\n const json = await res.json();\r\n if (json.token) {\r\n this.userToken = json.token;\r\n }\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(\"Failed verify this code.\");\r\n }\r\n };\r\n\r\n /**\r\n * Initiate the email setup process. Should be followed up with checkEmailVerification().\r\n * @method\r\n * @param {String} email - school email address to send verification code to\r\n * @tutorial Email Registration\r\n */\r\n registerEmail = async (email) => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v2/users/register_email`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n body: JSON.stringify({\r\n email: email,\r\n }),\r\n }\r\n );\r\n const json = await res.json();\r\n if (json.message) {\r\n throw new SidechatAPIError(json.message);\r\n }\r\n return json;\r\n } catch (err) {\r\n console.error(error);\r\n throw new SidechatAPIError(\"Failed to request email verification.\");\r\n }\r\n };\r\n\r\n /**\r\n * Check is the user's email is verified.\r\n * @method\r\n */\r\n checkEmailVerification = async () => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/users/check_email_verified`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n }\r\n );\r\n const json = await res.json();\r\n if (json.verified_email_updates_response) {\r\n return json.verified_email_updates_response;\r\n } else {\r\n throw new SidechatAPIError(json?.message || \"Email is not verified.\");\r\n }\r\n } catch (err) {\r\n console.error(error);\r\n throw new SidechatAPIError(\"Email is not verified.\");\r\n }\r\n };\r\n\r\n /**\r\n * Set the device ID of the current user\r\n * @method\r\n * @param {String} deviceId - the device ID to set\r\n */\r\n setDeviceID = async (deviceID) => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/register_device_token`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n body: JSON.stringify({\r\n build_type: \"release\",\r\n bundle_id: \"com.flowerave.sidechat\",\r\n device_token: deviceID,\r\n }),\r\n }\r\n );\r\n const json = await res.json();\r\n await AsyncStorage.setItem(\"deviceID\", deviceID);\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(\"Failed verify this code.\");\r\n }\r\n };\r\n\r\n /**\r\n * Get updated status for user and group\r\n * @method\r\n * @param {String} [groupID] - ID of a specific group to retrieve info from\r\n */\r\n getUserAndGroup = async (groupID = \"\") => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/updates?group_id=${groupID}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n }\r\n );\r\n const json = await res.json();\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(`Failed to get posts from group.`);\r\n }\r\n };\r\n\r\n /**\r\n * Fetches posts from the specified category in a group\r\n * @method\r\n * @param {String} groupID - group ID\r\n * @param {\"hot\"|\"recent\"|\"top\"} category - category to filter posts\r\n * @param {SidechatCursorString} [cursor] - cursor string\r\n * @returns {SidechatPostsAndCursor} List of posts and cursor\r\n */\r\n getGroupPosts = async (groupID, category = \"hot\", cursor) => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/posts?group_id=${groupID}&type=${category}${\r\n cursor ? \"&cursor=\" + cursor : \"\"\r\n }`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n }\r\n );\r\n const json = await res.json();\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(`Failed to get posts from group.`);\r\n }\r\n };\r\n\r\n /**\r\n * Upvote or downvote, or unvote a post\r\n * @method\r\n * @param {String} postID - post ID to vote on\r\n * @param {SidechatVoteString} action - whether to upvote, downvote, or reset vote\r\n */\r\n setVote = async (postID, action) => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(`https://api.sidechat.lol/v1/posts/set_vote`, {\r\n method: \"POST\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n body: JSON.stringify({\r\n post_id: postID,\r\n vote_status: action,\r\n }),\r\n });\r\n const json = await res.json();\r\n return json;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(`Failed to change the vote on post.`);\r\n }\r\n };\r\n\r\n /**\r\n * Get all the commments on a post\r\n * @method\r\n * @param {String} postID - post ID to get comments for\r\n * @returns {SidechatPostOrComment[]} list of comments\r\n */\r\n getPostComments = async (postID) => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(\r\n `https://api.sidechat.lol/v1/posts/comments/?post_id=${postID}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n }\r\n );\r\n const json = await res.json();\r\n // Function to preprocess the comments and organize them into a nested structure\r\n function preprocessComments(apiComments) {\r\n // Map to store comments by their IDs for efficient lookup\r\n const commentMap = new Map();\r\n // List to store top-level comments\r\n const topLevelComments = [];\r\n\r\n // Iterate through the API comments\r\n apiComments.forEach((comment) => {\r\n // Store the comment in the map with its ID as the key\r\n commentMap.set(comment.id, comment);\r\n // Get the parent comment using the reply_post_id\r\n const parentComment = commentMap.get(comment.reply_post_id);\r\n // Check if the comment is a top-level comment\r\n if (\r\n !parentComment ||\r\n comment.reply_post_id === comment.parent_post_id\r\n ) {\r\n // If it's a top-level comment, push it to the topLevelComments array\r\n topLevelComments.push(comment);\r\n } else {\r\n // If it's a reply, add it to the parent comment's replies array\r\n if (!parentComment.replies) parentComment.replies = [];\r\n parentComment.replies.push(comment);\r\n }\r\n });\r\n\r\n // Flatten the nested structure and return a single list of comments\r\n return flattenComments(topLevelComments);\r\n }\r\n\r\n // Function to flatten nested comments into a single list\r\n function flattenComments(comments) {\r\n // Use reduce to flatten the nested comments array into a single list\r\n return comments.reduce((flatComments, comment) => {\r\n // Push the current comment to the flatComments array\r\n flatComments.push(comment);\r\n // If the current comment has replies, recursively flatten them and push to the flatComments array\r\n if (comment.replies)\r\n flatComments.push(...flattenComments(comment.replies));\r\n // Return the flatComments array\r\n return flatComments;\r\n }, []);\r\n }\r\n\r\n const sortedComments = preprocessComments(json.posts);\r\n return sortedComments;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(`Failed to get comments on post.`);\r\n }\r\n };\r\n\r\n /**\r\n * Gets groups to be displayed on the \"Explore Groups\" page\r\n * @method\r\n * @returns {SidechatGroup[]}\r\n */\r\n getAvailableGroups = async () => {\r\n if (!this.userToken) {\r\n throw new SidechatAPIError(\"User is not authenticated.\");\r\n }\r\n try {\r\n const res = await fetch(`https://api.sidechat.lol/v1/groups/explore`, {\r\n method: \"GET\",\r\n headers: {\r\n ...this.defaultHeaders,\r\n Authorization: `Bearer ${this.userToken}`,\r\n },\r\n });\r\n const json = await res.json();\r\n return await json.groups;\r\n } catch (err) {\r\n console.error(err);\r\n throw new SidechatAPIError(`Failed to get groups from explore.`);\r\n }\r\n };\r\n}\r\n\r\nexport default SidechatAPIClient;\r\n"],"names":["SidechatAPIError","_Error","message","_this","call","name","_wrapNativeSuper","Error","_catch","body","recover","result","e","then","token","_this2","this","_this3","_this4","_this5","_this6","_this7","_this8","_this9","_this10","_this11","_this12","defaultHeaders","Accept","setToken","userToken","loginViaSMS","phoneNumber","Promise","resolve","fetch","method","headers","JSON","stringify","phone_number","version","res","json","err","console","error","reject","verifySMSCode","code","toUpperCase","_json$logged_in_user","logged_in_user","setAge","age","registrationID","Number","registration_id","registerEmail","email","_extends","Authorization","checkEmailVerification","verified_email_updates_response","setDeviceID","deviceID","build_type","bundle_id","device_token","AsyncStorage","setItem","getUserAndGroup","groupID","getGroupPosts","category","cursor","setVote","postID","action","post_id","vote_status","getPostComments","preprocessComments","apiComments","commentMap","Map","topLevelComments","forEach","comment","set","id","parentComment","get","reply_post_id","parent_post_id","replies","push","flattenComments","comments","reduce","flatComments","apply","posts","getAvailableGroups","groups"],"mappings":"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"}
@@ -1,104 +0,0 @@
1
- export default SidechatAPIClient;
2
- /**
3
- * API client class for making requests to Sidechat's private API. You'll need to [authenticate]{@tutorial Authentication} before using most of the methods.
4
- * @class
5
- * @since 2.0.0-alpha.0
6
- */
7
- declare class SidechatAPIClient {
8
- /**
9
- * Create a new instance of the API client
10
- * @param {SidechatAuthToken} [token] - user bearer token
11
- */
12
- constructor(token?: SidechatAuthToken);
13
- /**
14
- * User bearer token
15
- * @type {SidechatAuthToken}
16
- * */
17
- userToken: SidechatAuthToken;
18
- /**
19
- * Default headers for every API request
20
- * @type {Object}
21
- * @static
22
- */
23
- defaultHeaders: any;
24
- /**
25
- * Manually set the currently signed in user's token. Generally try to avoid this and instead either pass a token to the constructor or login automatically through the auth functions
26
- * @method
27
- * @param {SidechatAuthToken} token - user bearer token
28
- */
29
- setToken: (token: SidechatAuthToken) => void;
30
- /**
31
- * Initiate the login process with a phone number. Should be followed up with verifySMSCode().
32
- * @method
33
- * @param {Number} phoneNumber - US phone number (WITHOUT +1) to send verification code to
34
- */
35
- loginViaSMS: (phoneNumber: number) => Promise<any>;
36
- /**
37
- * Verify the code sent via SMS with loginViaSMS().
38
- * @method
39
- * @param {Number} phoneNumber - US phone number (WITHOUT +1) that verification code was sent to
40
- * @param {String} code - the verification code
41
- */
42
- verifySMSCode: (phoneNumber: number, code: string) => Promise<any>;
43
- /**
44
- * Set the user's age
45
- * @method
46
- * @param {Number} age - user's age in years
47
- * @param {String} registrationID - the registration ID generated by verifySMSCode()
48
- */
49
- setAge: (age: number, registrationID: string) => Promise<any>;
50
- /**
51
- * Initiate the email setup process. Should be followed up with checkEmailVerification().
52
- * @method
53
- * @param {String} email - school email address to send verification code to
54
- * @tutorial Email Registration
55
- */
56
- registerEmail: (email: string) => Promise<any>;
57
- /**
58
- * Check is the user's email is verified.
59
- * @method
60
- */
61
- checkEmailVerification: () => Promise<any>;
62
- /**
63
- * Set the device ID of the current user
64
- * @method
65
- * @param {String} deviceId - the device ID to set
66
- */
67
- setDeviceID: (deviceID: any) => Promise<any>;
68
- /**
69
- * Get updated status for user and group
70
- * @method
71
- * @param {String} [groupID] - ID of a specific group to retrieve info from
72
- */
73
- getUserAndGroup: (groupID?: string) => Promise<any>;
74
- /**
75
- * Fetches posts from the specified category in a group
76
- * @method
77
- * @param {String} groupID - group ID
78
- * @param {"hot"|"recent"|"top"} category - category to filter posts
79
- * @param {SidechatCursorString} [cursor] - cursor string
80
- * @returns {SidechatPostsAndCursor} List of posts and cursor
81
- */
82
- getGroupPosts: (groupID: string, category?: "hot" | "recent" | "top", cursor?: SidechatCursorString) => SidechatPostsAndCursor;
83
- /**
84
- * Upvote or downvote, or unvote a post
85
- * @method
86
- * @param {String} postID - post ID to vote on
87
- * @param {SidechatVoteString} action - whether to upvote, downvote, or reset vote
88
- */
89
- setVote: (postID: string, action: SidechatVoteString) => Promise<any>;
90
- /**
91
- * Get all the commments on a post
92
- * @method
93
- * @param {String} postID - post ID to get comments for
94
- * @returns {SidechatPostOrComment[]} list of comments
95
- */
96
- getPostComments: (postID: string) => SidechatPostOrComment[];
97
- /**
98
- * Gets groups to be displayed on the "Explore Groups" page
99
- * @method
100
- * @returns {SidechatGroup[]}
101
- */
102
- getAvailableGroups: () => SidechatGroup[];
103
- }
104
- //# sourceMappingURL=SidechatAPIClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SidechatAPIClient.d.ts","sourceRoot":"","sources":["SidechatAPIClient.js"],"names":[],"mappings":";AAGA;;;;GAIG;AACH;IAgBE;;;OAGG;IACH,oBAFW,iBAAiB,EAM3B;IAvBD;;;SAGK;IACL,WAFU,iBAAiB,CAEjB;IACV;;;;OAIG;IACH,oBAGE;IAYF;;;;OAIG;IACH,kBAFW,iBAAiB,UAI1B;IAEF;;;;OAIG;IACH,mDAgBE;IAEF;;;;;OAKG;IACH,mEAsBE;IAEF;;;;;OAKG;IACH,8DAyBE;IAEF;;;;;OAKG;IACH,+CA2BE;IAEF;;;OAGG;IACH,2CAyBE;IAEF;;;;OAIG;IACH,6CA2BE;IAEF;;;;OAIG;IACH,oDAqBE;IAEF;;;;;;;OAOG;IACH,4CAJW,KAAK,GAAC,QAAQ,GAAC,KAAK,WACpB,oBAAoB,KAClB,sBAAsB,CAyBjC;IAEF;;;;;OAKG;IACH,kCAFW,kBAAkB,kBAwB3B;IAEF;;;;;OAKG;IACH,qCAFa,qBAAqB,EAAE,CAqElC;IAEF;;;;OAIG;IACH,0BAFa,aAAa,EAAE,CAoB1B;CACH"}
@@ -1,10 +0,0 @@
1
- export default SidechatAPIError;
2
- /**
3
- * Throwable error caused by the Sidechat API
4
- * @class
5
- * @extends Error
6
- */
7
- declare class SidechatAPIError extends Error {
8
- constructor(message: any);
9
- }
10
- //# sourceMappingURL=SidechatAPIError.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SidechatAPIError.d.ts","sourceRoot":"","sources":["SidechatAPIError.js"],"names":[],"mappings":";AAAA;;;;GAIG;AACH;IACE,0BAGC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"8BAC8B,gCAAgC;6BACjC,+BAA+B"}
@@ -1,224 +0,0 @@
1
- /**
2
- * A user-created post or comment, depending on the "type" prop
3
- */
4
- type SidechatPostOrComment = {
5
- /**
6
- * - whether this object represents a post or a comment on a post
7
- */
8
- type: "post" | "comment";
9
- /**
10
- * - alphanumeric ID of post or comment
11
- */
12
- id: string;
13
- /**
14
- * - undocumented
15
- */
16
- authored_by_user: boolean;
17
- /**
18
- * - post creator's name in-app
19
- */
20
- alias: string;
21
- /**
22
- * - alphanumeric ID of group
23
- */
24
- group_id: string;
25
- /**
26
- * - group in which post or comment was created
27
- */
28
- group: SidechatGroup;
29
- /**
30
- * - text content of post or comment
31
- */
32
- text: string;
33
- /**
34
- * - date string of post or comment creation time
35
- */
36
- created_at: string;
37
- /**
38
- * - sum of upvotes and downvotes
39
- */
40
- vote_total: number;
41
- /**
42
- * - current user's vote on post or comment
43
- */
44
- vote_status: SidechatVoteString;
45
- /**
46
- * - array of assets attached to post or comment
47
- */
48
- assets: SidechatAsset[];
49
- /**
50
- * - undocumented
51
- */
52
- attachments: any[];
53
- /**
54
- * - whether or not you can send a DM to creator of post
55
- */
56
- dms_disabled: boolean;
57
- /**
58
- * - undocumented
59
- */
60
- tags: any[];
61
- /**
62
- * - creator's identity information
63
- */
64
- identity: SidechatIdentity;
65
- /**
66
- * - undocumented
67
- */
68
- pinned: boolean;
69
- /**
70
- * - undocumented
71
- */
72
- is_saved: boolean;
73
- /**
74
- * - undocumented
75
- */
76
- follow_status: "following" | "not_following";
77
- /**
78
- * - undocumented
79
- */
80
- destination?: "group";
81
- /**
82
- * - number of comments on post (only if type=post)
83
- */
84
- comment_count?: number;
85
- /**
86
- * - whether or not you can comment on post (only if type=post)
87
- */
88
- comments_disabled?: boolean;
89
- /**
90
- * - alphanumeric ID of parent post (only if type=comment)
91
- */
92
- parent_post_id?: string;
93
- /**
94
- * - alphanumeric ID of comment being replied to, falls back to parent_post_id (only if type=comment)
95
- */
96
- reply_post_id?: string;
97
- /**
98
- * - text content of comment being replied to, falls back to text (only if type=comment)
99
- */
100
- context?: string;
101
- };
102
- /**
103
- * A group object, containing metadata about a group as well as its join conditions and states
104
- */
105
- type SidechatGroup = {
106
- /**
107
- * - alphanumeric ID of group
108
- */
109
- id: string;
110
- /**
111
- * - human-readable name of group
112
- */
113
- name: string;
114
- /**
115
- * - name to file group under
116
- */
117
- analytics_name: string;
118
- /**
119
- * - whether or not current user is a member of group
120
- */
121
- membership_type: "non_member" | "member";
122
- /**
123
- * - group's theme color as hex code (e.g., #FFFFFF)
124
- */
125
- color: string;
126
- /**
127
- * - basis on which group accepts new members
128
- */
129
- group_join_type: "open" | "closed" | "email_domain";
130
- /**
131
- * - group's visibility setting
132
- */
133
- group_visibility: "private" | "public_to_all" | "public_to_schools";
134
- /**
135
- * - whether or not group's asset library is visible
136
- */
137
- asset_library_visibility: "show" | "hide";
138
- /**
139
- * - undocumented
140
- */
141
- roles?: any[];
142
- /**
143
- * - description of group
144
- */
145
- description?: string;
146
- /**
147
- * - image URL for group icon
148
- */
149
- icon_url?: SidechatPrivateAssetURL;
150
- /**
151
- * - number of users in group
152
- */
153
- member_count?: number;
154
- /**
155
- * - undocumented
156
- */
157
- should_show_leaderboard?: boolean;
158
- };
159
- /**
160
- * An asset object, containing information about an image within a post or comment
161
- */
162
- type SidechatAsset = {
163
- /**
164
- * - alphanumeric ID of asset
165
- */
166
- id: string;
167
- /**
168
- * - undocumented
169
- */
170
- type: "image";
171
- /**
172
- * - file type of asset
173
- */
174
- content_type: "jpeg" | "png" | "gif";
175
- /**
176
- * - the width of asset
177
- */
178
- width: number;
179
- /**
180
- * - the height of asset
181
- */
182
- height: number;
183
- /**
184
- * - URL string of asset's location
185
- */
186
- url: SidechatPrivateAssetURL;
187
- };
188
- /**
189
- * A user's identity information
190
- */
191
- type SidechatIdentity = {
192
- /**
193
- * - representation of user's name (varies across app)
194
- */
195
- name: string;
196
- /**
197
- * - undocumented
198
- */
199
- posted_with_username: boolean;
200
- };
201
- /**
202
- * An asset URL that can only be accessed by making a request with a user's bearer token attached in the Authorization header
203
- */
204
- type SidechatPrivateAssetURL = string;
205
- /**
206
- * A cursor for paginating through post lists
207
- */
208
- type SidechatCursorString = string;
209
- /**
210
- * A vote on a comment or post
211
- */
212
- type SidechatVoteString = "upvote" | "downvote" | "none";
213
- /**
214
- * A user's bearer authentication token needed for most requests
215
- */
216
- type SidechatAuthToken = string;
217
- /**
218
- * A list of posts and the associated cursor
219
- */
220
- type SidechatPostsAndCursor = {
221
- posts: SidechatPostOrComment[];
222
- cursor: SidechatCursorString;
223
- };
224
- //# sourceMappingURL=SidechatTypes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SidechatTypes.d.ts","sourceRoot":"","sources":["SidechatTypes.js"],"names":[],"mappings":";;;;;;;UAGU,MAAM,GAAC,SAAS;;;;;;;;;;;;;;;;;;;;WAKhB,aAAa;;;;;;;;;;;;;;;;iBAIb,kBAAkB;;;;YAClB,aAAa,EAAE;;;;;;;;;;;;;;;;cAIf,gBAAgB;;;;;;;;;;;;mBAGhB,WAAW,GAAC,eAAe;;;;kBAC3B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAcP,YAAY,GAAC,QAAQ;;;;;;;;qBAErB,MAAM,GAAC,QAAQ,GAAC,cAAc;;;;sBAC9B,SAAS,GAAC,eAAe,GAAC,mBAAmB;;;;8BAC7C,MAAM,GAAC,MAAM;;;;;;;;;;;;eAGb,uBAAuB;;;;;;;;;;;;;;;;;;;;;UASvB,OAAO;;;;kBACP,MAAM,GAAC,KAAK,GAAC,KAAK;;;;;;;;;;;;SAGlB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;0BAsBpB,QAAQ,GAAC,UAAU,GAAC,MAAM;;;;;;;;;WAW7B,qBAAqB,EAAE;YACvB,oBAAoB"}
File without changes
File without changes
File without changes