Changeset 3449105
- Timestamp:
- 01/28/2026 11:43:13 PM (2 months ago)
- Location:
- autoshare-for-twitter
- Files:
-
- 2 added
- 18 edited
- 1 copied
-
assets/blueprints (added)
-
assets/blueprints/blueprint.json (added)
-
tags/2.3.2 (copied) (copied from autoshare-for-twitter/trunk)
-
tags/2.3.2/autoshare-for-twitter.php (modified) (2 diffs)
-
tags/2.3.2/dist/autoshare-for-twitter.asset.php (modified) (1 diff)
-
tags/2.3.2/dist/autoshare-for-twitter.js (modified) (1 diff)
-
tags/2.3.2/includes/admin/post-transition.php (modified) (3 diffs)
-
tags/2.3.2/readme.txt (modified) (4 diffs)
-
tags/2.3.2/vendor/autoload.php (modified) (1 diff)
-
tags/2.3.2/vendor/composer/autoload_real.php (modified) (2 diffs)
-
tags/2.3.2/vendor/composer/autoload_static.php (modified) (3 diffs)
-
tags/2.3.2/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/autoshare-for-twitter.php (modified) (2 diffs)
-
trunk/dist/autoshare-for-twitter.asset.php (modified) (1 diff)
-
trunk/dist/autoshare-for-twitter.js (modified) (1 diff)
-
trunk/includes/admin/post-transition.php (modified) (3 diffs)
-
trunk/readme.txt (modified) (4 diffs)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (3 diffs)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
autoshare-for-twitter/tags/2.3.2/autoshare-for-twitter.php
r3327663 r3449105 4 4 * Description: Automatically shares the post title or custom message and a link to the post to X/Twitter. 5 5 * Disclaimer: TWITTER, TWEET, RETWEET and the Twitter logo are trademarks of Twitter, Inc. or its affiliates. 6 * Version: 2.3. 17 * Requires at least: 6. 66 * Version: 2.3.2 7 * Requires at least: 6.8 8 8 * Requires PHP: 7.4 9 9 * Author: 10up … … 23 23 24 24 define( 'AUTOSHARE_FOR_TWITTER', __FILE__ ); 25 define( 'AUTOSHARE_FOR_TWITTER_VERSION', '2.3. 1' );25 define( 'AUTOSHARE_FOR_TWITTER_VERSION', '2.3.2' ); 26 26 define( 'AUTOSHARE_FOR_TWITTER_URL', plugin_dir_url( __FILE__ ) ); 27 27 define( 'AUTOSHARE_FOR_TWITTER_PATH', plugin_dir_path( __FILE__ ) ); -
autoshare-for-twitter/tags/2.3.2/dist/autoshare-for-twitter.asset.php
r3327663 r3449105 1 <?php return array('dependencies' => array('lodash', 'react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-date', 'wp-edit-post', 'wp-element', 'wp-i18n', 'wp-plugins', 'wp-primitives'), 'version' => 'd 9b56b74e9cf28181dfd');1 <?php return array('dependencies' => array('lodash', 'react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-date', 'wp-edit-post', 'wp-element', 'wp-i18n', 'wp-plugins', 'wp-primitives'), 'version' => 'da37bd91155b3fa9601f'); -
autoshare-for-twitter/tags/2.3.2/dist/autoshare-for-twitter.js
r3327663 r3449105 1 (()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var s in r)e.o(r,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:r[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{setAllowTweetImage:()=>P,setAutoshareEnabled:()=>j,setErrorMessage:()=>v,setLoaded:()=>A,setOverriding:()=>S,setSaving:()=>y,setTweetAccounts:()=>L,setTweetText:()=>E});var r={};e.r(r),e.d(r,{getAllowTweetImage:()=>D,getAutoshareEnabled:()=>k,getErrorMessage:()=>N,getOverriding:()=>C,getSaving:()=>I,getTweetAccounts:()=>O,getTweetText:()=>M});const s=window.wp.element, a=window.wp.plugins,o=window.wp.editPost,i=window.wp.data,n=window.wp.components,l=window.wp.i18n,c="SET_AUTOSHARE_FOR_TWITTER_ENABLED",u="SET_ERROR_MESSAGE",d="SET_LOADED",h="SET_OVERRIDING",w="SET_SAVING",g="SET_TWEET_TEXT",m="SET_ALLOW_TWEET_IMAGE",p="SET_TWEET_ACCOUNTS",{enabled:_,allowTweetImage:f,tweetAccounts:x,customTweetBody:T}=adminAutoshareForTwitter,b={autoshareEnabled:!!_&&"0"!==_,errorMessage:"",loaded:!1,overriding:!!T,overrideLength:0,tweetText:T||"",allowTweetImage:!!f,tweetAccounts:x||[]};const j=e=>({type:c,autoshareEnabled:e}),v=e=>({type:u,errorMessage:e}),A=()=>({type:d}),S=e=>({type:h,overriding:e}),y=e=>({type:w,saving:e}),E=e=>({type:g,tweetText:e}),P=e=>({type:m,allowTweetImage:e}),L=e=>({type:p,tweetAccounts:e}),k=e=>e.autoshareEnabled,N=e=>e.errorMessage,C=e=>e.overriding,I=e=>e.saving,M=e=>e.tweetText,D=e=>e.allowTweetImage,O=e=>e.tweetAccounts||[],F="10up/autoshare",X=window.wp.primitives,R=window.ReactJSXRuntime,z=e=>(0,R.jsx)(X.SVG,{version:"1.1",xmlSpace:"preserve",width:256,height:256,viewBox:"0 0 256 256",children:(0,R.jsxs)("g",{style:{stroke:"none",strokeWidth:0,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"none",fillRule:"nonzero",opacity:1},children:[(0,R.jsx)("path",{d:"M45 90C20.147 90 0 69.853 0 45S20.147 0 45 0s45 20.147 45 45-20.147 45-45 45z",style:{stroke:"none",strokeWidth:1,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:e,fillRule:"nonzero",opacity:1},transform:"matrix(2.33 0 0 2.33 22.612 22.612)"}),(0,R.jsx)("path",{d:"M17.884 19.496 38.925 47.63 17.751 70.504h4.765l18.538-20.027 14.978 20.027h16.217L50.024 40.788l19.708-21.291h-4.765L47.895 37.94 34.101 19.496H17.884zm7.008 3.51h7.45L65.24 66.993h-7.45L24.892 23.006z",style:{stroke:"none",strokeWidth:1,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"#fff",fillRule:"nonzero",opacity:1},transform:"matrix(2.33 0 0 2.33 22.612 22.612)"})]})}),B=z("#1B1C20"),U=z("#1DA1F2"),W=z("#787E88"),$=z("#D0494A"),G=z("#7FD051"),H=e=>{let t=B;return e&&(t="published"===e?G:"error"===e?$:B),(0,R.jsx)(n.Icon,{className:"autoshare-for-twitter-icon",icon:t,size:48})},K=window.wp.apiFetch;var q=e.n(K);const V=window.lodash,{enableAutoshareKey:J,errorText:Y,restUrl:Q,tweetBodyKey:Z,allowTweetImageKey:ee,tweetAccountsKey:te}=adminAutoshareForTwitter;function re(){const{tweetText:e}=(0,i.useSelect)((e=>({tweetText:e(F).getTweetText()}))),{setTweetText:t}=(0,i.useDispatch)(F);return[e,t]}function se(){const{autoshareEnabled:e}=(0,i.useSelect)((e=>({autoshareEnabled:e(F).getAutoshareEnabled()}))),{setAutoshareEnabled:t}=(0,i.useDispatch)(F);return[e,t]}function ae(){const{allowTweetImage:e}=(0,i.useSelect)((e=>({allowTweetImage:e(F).getAllowTweetImage()}))),{setAllowTweetImage:t}=(0,i.useDispatch)(F);return[e,t]}function oe(){const{tweetAccounts:e}=(0,i.useSelect)((e=>({tweetAccounts:e(F).getTweetAccounts()}))),{setTweetAccounts:t}=(0,i.useDispatch)(F);return[e,t]}function ie(){const{errorMessage:e}=(0,i.useSelect)((e=>({errorMessage:e(F).getErrorMessage()}))),{setErrorMessage:t}=(0,i.useDispatch)(F);return[e,t]}function ne(){const{imageId:e}=(0,i.useSelect)((e=>({imageId:e("core/editor").getEditedPostAttribute("featured_media")})));return e>0}function le(){const[e]=se(),[t]=ae(),[r]=oe(),[a]=re(),[,o]=ie(),[,n]=function(){const{saving:e}=(0,i.useSelect)((e=>({saving:e(F).getSaving()})));return[e,function(e){(0,i.dispatch)(F).setSaving(e),e?(0,i.dispatch)("core/editor").lockPostSaving():(0,i.dispatch)("core/editor").unlockPostSaving()}]}(),{hasFeaturedImage:c}=(0,i.useSelect)((e=>({hasFeaturedImage:e("core/editor").getEditedPostAttribute("featured_media")>0}))),u=(0,s.useCallback)((0,V.debounce)((async function(e,t,r,s){const a={};a[J]=e,a[Z]=t,a[ee]=r,a[te]=s||[];try{n(!0);const e=await q()({url:Q,data:a,method:"POST",parse:!1});if(!e.ok)throw e;await e.json(),o(""),n(!1)}catch(e){o(e.statusText?`${Y} ${e.status}: ${e.statusText}`:(0,l.__)("An error occurred.","autoshare-for-twitter")),n(!1)}}),250),[]);(0,s.useEffect)((()=>{u(e,a,t,r)}),[e,a,c,t,r,u])}const{siteUrl:ce,isLocalSite:ue,twitterURLLength:de}=adminAutoshareForTwitter;function he(){const e=e=>{if(!ue&&!isNaN(de))return Number(de);const t=e("core/editor").getPermalink();if(t)return t.length;const r=e("core/editor").getEditedPostAttribute("title");return r&&"rendered"in r?(ce+r.rendered).length:ce.length},{permalinkLength:t,maxLength:r}=(0,i.useSelect)((t=>({permalinkLength:e(t),maxLength:275-e(t)}))),[a,o]=re(),{tweetLength:c,overrideLengthClass:u}=(()=>{const e=t+a.length+5;return 280<=e?{tweetLength:(0,l.sprintf)(/* translators: %d is tweet message character count */ /* translators: %d is tweet message character count */1 (()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var s in r)e.o(r,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:r[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{setAllowTweetImage:()=>P,setAutoshareEnabled:()=>j,setErrorMessage:()=>v,setLoaded:()=>A,setOverriding:()=>S,setSaving:()=>y,setTweetAccounts:()=>L,setTweetText:()=>E});var r={};e.r(r),e.d(r,{getAllowTweetImage:()=>D,getAutoshareEnabled:()=>k,getErrorMessage:()=>N,getOverriding:()=>C,getSaving:()=>I,getTweetAccounts:()=>O,getTweetText:()=>M});const s=window.wp.element,o=window.wp.plugins,a=window.wp.editPost,i=window.wp.data,n=window.wp.components,l=window.wp.i18n,c="SET_AUTOSHARE_FOR_TWITTER_ENABLED",u="SET_ERROR_MESSAGE",d="SET_LOADED",h="SET_OVERRIDING",w="SET_SAVING",g="SET_TWEET_TEXT",m="SET_ALLOW_TWEET_IMAGE",p="SET_TWEET_ACCOUNTS",{enabled:_,allowTweetImage:f,tweetAccounts:x,customTweetBody:T}=adminAutoshareForTwitter,b={autoshareEnabled:!!_&&"0"!==_,errorMessage:"",loaded:!1,overriding:!!T,overrideLength:0,tweetText:T||"",allowTweetImage:!!f,tweetAccounts:x||[]};const j=e=>({type:c,autoshareEnabled:e}),v=e=>({type:u,errorMessage:e}),A=()=>({type:d}),S=e=>({type:h,overriding:e}),y=e=>({type:w,saving:e}),E=e=>({type:g,tweetText:e}),P=e=>({type:m,allowTweetImage:e}),L=e=>({type:p,tweetAccounts:e}),k=e=>e.autoshareEnabled,N=e=>e.errorMessage,C=e=>e.overriding,I=e=>e.saving,M=e=>e.tweetText,D=e=>e.allowTweetImage,O=e=>e.tweetAccounts||[],F="10up/autoshare",R=window.wp.primitives,X=window.ReactJSXRuntime,z=e=>(0,X.jsx)(R.SVG,{version:"1.1",xmlSpace:"preserve",width:256,height:256,viewBox:"0 0 256 256",children:(0,X.jsxs)("g",{style:{stroke:"none",strokeWidth:0,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"none",fillRule:"nonzero",opacity:1},children:[(0,X.jsx)("path",{d:"M45 90C20.147 90 0 69.853 0 45S20.147 0 45 0s45 20.147 45 45-20.147 45-45 45z",style:{stroke:"none",strokeWidth:1,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:e,fillRule:"nonzero",opacity:1},transform:"matrix(2.33 0 0 2.33 22.612 22.612)"}),(0,X.jsx)("path",{d:"M17.884 19.496 38.925 47.63 17.751 70.504h4.765l18.538-20.027 14.978 20.027h16.217L50.024 40.788l19.708-21.291h-4.765L47.895 37.94 34.101 19.496H17.884zm7.008 3.51h7.45L65.24 66.993h-7.45L24.892 23.006z",style:{stroke:"none",strokeWidth:1,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"#fff",fillRule:"nonzero",opacity:1},transform:"matrix(2.33 0 0 2.33 22.612 22.612)"})]})}),B=z("#1B1C20"),U=z("#1DA1F2"),W=z("#787E88"),$=z("#D0494A"),G=z("#7FD051"),H=e=>{let t=B;return e&&(t="published"===e?G:"error"===e?$:B),(0,X.jsx)(n.Icon,{className:"autoshare-for-twitter-icon",icon:t,size:48})},K=window.wp.apiFetch;var q=e.n(K);const V=window.lodash,{enableAutoshareKey:J,errorText:Y,restUrl:Q,tweetBodyKey:Z,allowTweetImageKey:ee,tweetAccountsKey:te}=adminAutoshareForTwitter;function re(){const{tweetText:e}=(0,i.useSelect)(e=>({tweetText:e(F).getTweetText()})),{setTweetText:t}=(0,i.useDispatch)(F);return[e,t]}function se(){const{autoshareEnabled:e}=(0,i.useSelect)(e=>({autoshareEnabled:e(F).getAutoshareEnabled()})),{setAutoshareEnabled:t}=(0,i.useDispatch)(F);return[e,t]}function oe(){const{allowTweetImage:e}=(0,i.useSelect)(e=>({allowTweetImage:e(F).getAllowTweetImage()})),{setAllowTweetImage:t}=(0,i.useDispatch)(F);return[e,t]}function ae(){const{tweetAccounts:e}=(0,i.useSelect)(e=>({tweetAccounts:e(F).getTweetAccounts()})),{setTweetAccounts:t}=(0,i.useDispatch)(F);return[e,t]}function ie(){const{errorMessage:e}=(0,i.useSelect)(e=>({errorMessage:e(F).getErrorMessage()})),{setErrorMessage:t}=(0,i.useDispatch)(F);return[e,t]}function ne(){const{imageId:e}=(0,i.useSelect)(e=>({imageId:e("core/editor").getEditedPostAttribute("featured_media")}));return e>0}function le(){const[e]=se(),[t]=oe(),[r]=ae(),[o]=re(),[,a]=ie(),[,n]=function(){const{saving:e}=(0,i.useSelect)(e=>({saving:e(F).getSaving()}));return[e,function(e){(0,i.dispatch)(F).setSaving(e),e?(0,i.dispatch)("core/editor").lockPostSaving():(0,i.dispatch)("core/editor").unlockPostSaving()}]}(),{hasFeaturedImage:c}=(0,i.useSelect)(e=>({hasFeaturedImage:e("core/editor").getEditedPostAttribute("featured_media")>0})),u=(0,s.useCallback)((0,V.debounce)(async function(e,t,r,s){const o={};o[J]=e,o[Z]=t,o[ee]=r,o[te]=s||[];try{n(!0);const e=await q()({url:Q,data:o,method:"POST",parse:!1});if(!e.ok)throw e;await e.json(),a(""),n(!1)}catch(e){a(e.statusText?`${Y} ${e.status}: ${e.statusText}`:(0,l.__)("An error occurred.","autoshare-for-twitter")),n(!1)}},250),[]);(0,s.useEffect)(()=>{u(e,o,t,r)},[e,o,c,t,r,u])}const{siteUrl:ce,isLocalSite:ue,twitterURLLength:de}=adminAutoshareForTwitter;function he(){const e=e=>{if(!ue&&!isNaN(de))return Number(de);const t=e("core/editor").getPermalink();if(t)return t.length;const r=e("core/editor").getEditedPostAttribute("title");return r&&"rendered"in r?(ce+r.rendered).length:ce.length},{permalinkLength:t,maxLength:r}=(0,i.useSelect)(t=>({permalinkLength:e(t),maxLength:275-e(t)})),[o,a]=re(),{tweetLength:c,overrideLengthClass:u}=(()=>{const e=t+o.length+5;return 280<=e?{tweetLength:(0,l.sprintf)(/* translators: %d is tweet message character count */ /* translators: %d is tweet message character count */ 2 2 (0,l.__)("%d - Too Long!","autoshare-for-twitter"),e),overrideLengthClass:"over-limit"}:240<=e?{tweetLength:(0,l.sprintf)(/* translators: %d is tweet message character count */ /* translators: %d is tweet message character count */ 3 (0,l.__)("%d - Getting Long!","autoshare-for-twitter"),e),overrideLengthClass:"near-limit"}:{tweetLength:`${e}`,overrideLengthClass:""}})(),d=(0,i.useSelect)( (e=>e("core/editor").getEditedPostAttribute("status"))),[h,w]=(0,s.useState)("publish"===d);(0,s.useEffect)((()=>{"publish"!==d||h||(o(""),w(!0))}),[d,h]);const g=()=>(0,R.jsx)(n.Tooltip,{text:(0,l.__)("Count is inclusive of the post permalink which will be included in the final tweet.","autoshare-for-twitter"),children:(0,R.jsx)("div",{children:c})});return(0,R.jsx)(n.TextareaControl,{value:a,onChange:e=>{o(e)},className:"autoshare-for-twitter-tweet-text",maxLength:r,label:(0,R.jsxs)("span",{style:{marginTop:"0.5rem",display:"block"},className:"autoshare-for-twitter-prepublish__message-label",children:[(0,R.jsxs)("span",{children:[(0,l.__)("Custom message:","autoshare-for-twitter")," "]}),(0,R.jsx)("span",{id:"autoshare-for-twitter-counter-wrap",className:`alignright ${u}`,children:(0,R.jsx)(g,{})})]})})}const we=window.wp.date,{connectedAccounts:ge,connectAccountUrl:me}=adminAutoshareForTwitter,pe=(0,we.getSettings)();function _e(){const e=ge?Object.values(ge):[],[t]=e,[r]=oe();return(0,R.jsxs)("div",{className:"autoshare-for-twitter-accounts-wrapper",children:[e.map((e=>(0,R.jsx)(fe,{...e},e.id))),t&&r?.length>0&&(0,R.jsx)(Te,{...t}),r?.length>0&&(0,R.jsx)("div",{className:"autoshare-for-twitter-rate-monitor__disclaimer",children:(0,R.jsxs)("p",{children:[(0,R.jsx)("strong",{children:(0,l.__)("Note:","autoshare-for-twitter")})," ",(0,l.__)("The displayed API rate limits are updated only when a tweet is posted. Since there is no dedicated endpoint for real-time usage data, the information provided may not fully reflect the current API usage, especially if other tweets are made through the same app.","autoshare-for-twitter")]})}),(0,R.jsx)("span",{className:"connect-account-link",children:(0,R.jsx)(n.ExternalLink,{href:me,children:(0,l.__)("Connect an account","autoshare-for-twitter")})})]})}function fe(e){const[t,r]=oe(),{id:s,name:a,username:o,profile_image_url:i}=e;return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)("div",{className:"twitter-account-wrapper",children:[(0,R.jsx)("img",{src:i,alt:a,className:"twitter-account-profile-image"}),(0,R.jsxs)("span",{className:"account-details",children:[(0,R.jsxs)("strong",{children:["@",o]}),(0,R.jsx)("br",{}),a]}),(0,R.jsx)(n.ToggleControl,{checked:t&&t.includes(s),onChange:e=>{r(e?[...t,s]:t.filter((e=>e!==s)))},className:"autoshare-for-twitter-account-toggle"})]}),t&&t.includes(s)&&(0,R.jsx)(xe,{...e})]})}function xe({rate_limits:e}){return!e||!e.user_limit_24hour_limit||e?.user_limit_24hour_reset<Math.floor(Date.now()/1e3)?(0,R.jsx)("p",{children:(0,l.__)("No X/Twitter rate limit available yet. Make a post to X/Twitter first.","autoshare-for-twitter")}):(0,R.jsx)("div",{className:"autoshare-for-twitter-rate-monitor__user",children:(0,R.jsx)(be,{title:(0,l.__)("User 24-Hour Limit:","autoshare-for-twitter"),remaining:e?.user_limit_24hour_remaining,limit:e?.user_limit_24hour_limit,reset:e?.user_limit_24hour_reset,tooltip:(0,l.__)("The maximum number of requests a single user can make across all API endpoints within a 24-hour period.","autoshare-for-twitter")})})}function Te({rate_limits:e}){return!e||!e.app_limit_24hour_limit||e?.app_limit_24hour_reset<Math.floor(Date.now()/1e3)?null:(0,R.jsx)("div",{className:"autoshare-for-twitter-rate-monitor__app",children:(0,R.jsx)(be,{title:(0,l.__)("App 24-Hour Limit:","autoshare-for-twitter"),remaining:e?.app_limit_24hour_remaining,limit:e?.app_limit_24hour_limit,reset:e?.app_limit_24hour_reset,tooltip:(0,l.__)("The total number of API calls your app can make across all users within a 24-hour period.","autoshare-for-twitter")})})}function be({title:e,remaining:t,limit:r,reset:s,tooltip:a}){let o=(0,l.__)("N/A","autoshare-for-twitter");return s&&pe?.formats?.datetime&&(o=(0,we.dateI18n)(pe.formats.datetime,1e3*s),o=(0,l.sprintf)("Resets on %1$s",o)),(0,R.jsxs)("div",{className:"autoshare-for-twitter-rate-monitor__rate",children:[(0,R.jsxs)("p",{className:"autoshare-for-twitter-rate-monitor__rate-limit",children:[(0,R.jsx)(n.Tooltip,{text:a,children:(0,R.jsx)("strong",{children:e})})," ",(0,l.sprintf)(/* translators: %1$s: Remaining, %2$s: Limit */ /* translators: %1$s: Remaining, %2$s: Limit */4 (0,l.__)("%1$s of %2$s requests remaining","autoshare-for-twitter"),null!=t?t:(0,l.__)("N/A","autoshare-for-twitter"),null!=r?r:(0,l.__)("N/A","autoshare-for-twitter"))]}),(0, R.jsx)("p",{className:"autoshare-for-twitter-rate-monitor__rate-reset",children:o})]})}const je=({errorMessage:e})=>(0,R.jsxs)("span",{children:[e," ",e?.includes("When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer App that is attached to a Project. You can create a project via the developer portal.")&&(0,R.jsx)(n.ExternalLink,{href:"https://developer.twitter.com/en/docs/twitter-api/migrate/ready-to-migrate",children:(0,l.__)("Learn more here.","autoshare-for-twitter")})]});function ve({messages:e}){return e&&e.message.length?(0,R.jsxs)("div",{className:"autoshare-for-twitter-post-status",children:[e.message.map(((e,t)=>{const r=H(e.status);return(0,R.jsxs)("div",{className:"autoshare-for-twitter-log",children:[r,(0,R.jsxs)("span",{children:[e.url?(0,R.jsx)(n.ExternalLink,{href:e.url,children:e.message}):(0,R.jsx)(je,{errorMessage:e.message}),!!e.handle&&(0,R.jsx)("strong",{children:" - @"+e.handle})]})]},t)})),(0,R.jsx)(n.CardDivider,{})]}):null}function Ae(){const[e,t]=se(),[r,s]=function(){const{overriding:e}=(0,i.useSelect)((e=>({overriding:e(F).getOverriding()}))),{setOverriding:t}=(0,i.useDispatch)(F);return[e,t]}(),[a,o]=ae(),[c]=ie(),u=ne(),d=(0,i.select)("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status");return le(),(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(ve,{messages:d}),(0,R.jsx)(n.ToggleControl,{label:e?(0,l.__)("Post to X/Twitter when published","autoshare-for-twitter"):(0,l.__)("Don't post to X/Twitter","autoshare-for-twitter"),checked:e,onChange:e=>{t(e)},className:"autoshare-for-twitter-toggle-control"}),e&&u&&(0,R.jsx)(n.ToggleControl,{label:(0,l.__)("Use featured image in Post to X/Twitter","autoshare-for-twitter"),checked:a,onChange:()=>{o(!a)},className:"autoshare-for-twitter-toggle-control"}),e&&(0,R.jsx)(_e,{}),e&&(0,R.jsxs)("div",{className:"autoshare-for-twitter-prepublish__override-row",children:[r&&(0,R.jsx)(he,{}),(0,R.jsx)(n.Button,{isLink:!0,onClick:()=>{s(!r)},children:r?(0,l.__)("Hide","autoshare-for-twitter"):(0,l.__)("Edit","autoshare-for-twitter")})]}),(0,R.jsx)("div",{children:c})]})}const Se=(0,window.wp.compose.compose)((0,i.withSelect)((e=>({statusMessage:e("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status")}))))((function(){const e=ne(),[t,r]=ae(),[,a]=re(),[o,c]=(0,s.useState)(!1),[u,d]=(0,s.useState)(!1),{messages:h}=(0,i.useSelect)((e=>({messages:e("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status")}))),[w,g]=(0,s.useState)(h);if(le(),w&&!w.message.length)return null;const m=(0,R.jsx)(n.Icon,{icon:(0,R.jsx)("svg",{viewBox:"0 0 28 28",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28","aria-hidden":"true",focusable:"false",children:(0,R.jsx)("path",{d:"M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z"})})}),p=(0,R.jsx)(n.Icon,{icon:(0,R.jsx)("svg",{viewBox:"0 0 28 28",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28","aria-hidden":"true",focusable:"false",children:(0,R.jsx)("path",{d:"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"})})});return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(ve,{messages:w}),(0,R.jsx)(n.Button,{className:"autoshare-for-twitter-tweet-now",variant:"link",text:(0,l.__)("Post to X/Twitter now","autoshare-for-twitter"),onClick:()=>d(!u),iconPosition:"right",icon:u?m:p}),u&&(0,R.jsxs)(R.Fragment,{children:[e&&(0,R.jsx)(n.ToggleControl,{label:(0,l.__)("Use featured image in Post to X/Twitter","autoshare-for-twitter"),checked:t,onChange:()=>{r(!t)},className:"autoshare-for-twitter-toggle-control"}),(0,R.jsx)(_e,{}),(0,R.jsx)(he,{}),(0,R.jsx)(n.Button,{variant:"primary",className:"autoshare-for-twitter-re-tweet",text:o?(0,l.__)("Posting to X/Twitter…","autoshare-for-twitter"):(0,l.__)("Post to X/Twitter","autoshare-for-twitter"),onClick:()=>{(async()=>{c(!0);const e=await(0,i.select)("core/editor").getCurrentPostId(),t=new FormData;t.append("action",adminAutoshareForTwitter.retweetAction),t.append("nonce",adminAutoshareForTwitter.nonce),t.append("post_id",e);const r=await fetch(ajaxurl,{method:"POST",body:t}),{data:s}=await r.json();s.is_retweeted&&a(""),g(s),c(!1)})()}})]})]})}));(0,i.registerStore)(F,{reducer:function(e=b,t){switch(t.type){case c:return{...e,autoshareEnabled:t.autoshareEnabled};case u:return{...e,errorMessage:t.errorMessage};case d:return{...e,loaded:!0};case h:return{...e,overriding:t.overriding};case w:return{...e,saving:t.saving};case g:return{...e,tweetText:t.tweetText};case m:return{...e,allowTweetImage:t.allowTweetImage};case p:return{...e,tweetAccounts:t.tweetAccounts}}},actions:t,selectors:r});class ye extends s.Component{constructor(e){super(e),this.state={enabledText:""},this.maybeSetEnabledText=this.maybeSetEnabledText.bind(this)}componentDidMount(){(0,i.dispatch)(F).setLoaded(),(0,i.subscribe)(this.maybeSetEnabledText)}maybeSetEnabledText(){try{const e=(0,i.select)(F).getAutoshareEnabled(),t=e?(0,l.__)("This post will be posted to X/Twitter","autoshare-for-twitter"):(0,l.__)("This post will not be posted to X/Twitter","autoshare-for-twitter");t!==this.state.enabledText&&this.setState({enabled:e,enabledText:t})}catch(e){}}render(){const{enabled:e,enabledText:t}=this.state,r=e?U:W,s=(0,R.jsx)(n.Icon,{className:"autoshare-for-twitter-icon components-panel__icon",icon:r,size:24});return(0,R.jsx)(o.PluginPrePublishPanel,{title:t,icon:s,className:"autoshare-for-twitter-pre-publish-panel",children:(0,R.jsx)(Ae,{})})}}class Ee extends s.Component{constructor(e){super(e),this.state={enabledText:""},this.maybeSetEnabledText=this.maybeSetEnabledText.bind(this)}componentDidMount(){(0,i.dispatch)(F).setLoaded(),(0,i.subscribe)(this.maybeSetEnabledText)}maybeSetEnabledText(){try{const e=(0,i.select)(F).getAutoshareEnabled(),t=e?(0,l.__)("Autopost to X/Twitter enabled","autoshare-for-twitter"):(0,l.__)("Autopost to X/Twitter disabled","autoshare-for-twitter");t!==this.state.enabledText&&this.setState({enabledText:t,enabled:e})}catch(e){}}render(){if("publish"===(0,i.select)("core/editor").getCurrentPostAttribute("status")){const e=(0,i.select)("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status");let t="";return e&&e.message&&e.message.length&&(t=e.message[e.message.length-1].status||""),(0,R.jsx)(o.PluginDocumentSettingPanel,{title:(0,l.__)("Autopost to X/Twitter","autoshare-for-twitter"),icon:H(t),className:"autoshare-for-twitter-editor-panel",children:(0,R.jsx)(Se,{})})}const{enabled:e,enabledText:t}=this.state,r=e?U:W,s=(0,R.jsx)(n.Icon,{className:"autoshare-for-twitter-icon components-panel__icon",icon:r,size:24});return(0,R.jsx)(o.PluginDocumentSettingPanel,{title:t,icon:s,className:"autoshare-for-twitter-editor-panel",children:(0,R.jsx)(Ae,{})})}}(0,a.registerPlugin)("autoshare-for-twitter-editor-panel",{render:Ee}),(0,a.registerPlugin)("autoshare-for-twitter-pre-publish-panel",{render:ye}),(0,a.registerPlugin)("autoshare-for-twitter-post-publish-panel",{render:()=>(0,R.jsx)(o.PluginPostPublishPanel,{className:"my-plugin-post-status-info",children:(0,R.jsx)(Se,{})})})})();3 (0,l.__)("%d - Getting Long!","autoshare-for-twitter"),e),overrideLengthClass:"near-limit"}:{tweetLength:`${e}`,overrideLengthClass:""}})(),d=(0,i.useSelect)(e=>e("core/editor").isPublishingPost()),h=(0,i.useSelect)(e=>"publish"===e("core/editor").getEditedPostAttribute("status")),w=(0,s.useRef)(d);(0,s.useEffect)(()=>{w.current&&!d&&h&&a(""),w.current=d},[d,h]);const g=()=>(0,X.jsx)(n.Tooltip,{text:(0,l.__)("Count is inclusive of the post permalink which will be included in the final tweet.","autoshare-for-twitter"),children:(0,X.jsx)("div",{children:c})});return(0,X.jsx)(n.TextareaControl,{value:o,onChange:e=>{a(e)},className:"autoshare-for-twitter-tweet-text",maxLength:r,label:(0,X.jsxs)("span",{style:{marginTop:"0.5rem",display:"block"},className:"autoshare-for-twitter-prepublish__message-label",children:[(0,X.jsxs)("span",{children:[(0,l.__)("Custom message:","autoshare-for-twitter")," "]}),(0,X.jsx)("span",{id:"autoshare-for-twitter-counter-wrap",className:`alignright ${u}`,children:(0,X.jsx)(g,{})})]})})}const we=window.wp.date,{connectedAccounts:ge,connectAccountUrl:me}=adminAutoshareForTwitter,pe=(0,we.getSettings)();function _e(){const e=ge?Object.values(ge):[],[t]=e,[r]=ae();return(0,X.jsxs)("div",{className:"autoshare-for-twitter-accounts-wrapper",children:[e.map(e=>(0,X.jsx)(fe,{...e},e.id)),t&&r?.length>0&&(0,X.jsx)(Te,{...t}),r?.length>0&&(0,X.jsx)("div",{className:"autoshare-for-twitter-rate-monitor__disclaimer",children:(0,X.jsxs)("p",{children:[(0,X.jsx)("strong",{children:(0,l.__)("Note:","autoshare-for-twitter")})," ",(0,l.__)("The displayed API rate limits are updated only when a tweet is posted. Since there is no dedicated endpoint for real-time usage data, the information provided may not fully reflect the current API usage, especially if other tweets are made through the same app.","autoshare-for-twitter")]})}),(0,X.jsx)("span",{className:"connect-account-link",children:(0,X.jsx)(n.ExternalLink,{href:me,children:(0,l.__)("Connect an account","autoshare-for-twitter")})})]})}function fe(e){const[t,r]=ae(),{id:s,name:o,username:a,profile_image_url:i}=e;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)("div",{className:"twitter-account-wrapper",children:[(0,X.jsx)("img",{src:i,alt:o,className:"twitter-account-profile-image"}),(0,X.jsxs)("span",{className:"account-details",children:[(0,X.jsxs)("strong",{children:["@",a]}),(0,X.jsx)("br",{}),o]}),(0,X.jsx)(n.ToggleControl,{checked:t&&t.includes(s),onChange:e=>{r(e?[...t,s]:t.filter(e=>e!==s))},className:"autoshare-for-twitter-account-toggle"})]}),t&&t.includes(s)&&(0,X.jsx)(xe,{...e})]})}function xe({rate_limits:e}){return!e||!e.user_limit_24hour_limit||e?.user_limit_24hour_reset<Math.floor(Date.now()/1e3)?(0,X.jsx)("p",{children:(0,l.__)("No X/Twitter rate limit available yet. Make a post to X/Twitter first.","autoshare-for-twitter")}):(0,X.jsx)("div",{className:"autoshare-for-twitter-rate-monitor__user",children:(0,X.jsx)(be,{title:(0,l.__)("User 24-Hour Limit:","autoshare-for-twitter"),remaining:e?.user_limit_24hour_remaining,limit:e?.user_limit_24hour_limit,reset:e?.user_limit_24hour_reset,tooltip:(0,l.__)("The maximum number of requests a single user can make across all API endpoints within a 24-hour period.","autoshare-for-twitter")})})}function Te({rate_limits:e}){return!e||!e.app_limit_24hour_limit||e?.app_limit_24hour_reset<Math.floor(Date.now()/1e3)?null:(0,X.jsx)("div",{className:"autoshare-for-twitter-rate-monitor__app",children:(0,X.jsx)(be,{title:(0,l.__)("App 24-Hour Limit:","autoshare-for-twitter"),remaining:e?.app_limit_24hour_remaining,limit:e?.app_limit_24hour_limit,reset:e?.app_limit_24hour_reset,tooltip:(0,l.__)("The total number of API calls your app can make across all users within a 24-hour period.","autoshare-for-twitter")})})}function be({title:e,remaining:t,limit:r,reset:s,tooltip:o}){let a=(0,l.__)("N/A","autoshare-for-twitter");return s&&pe?.formats?.datetime&&(a=(0,we.dateI18n)(pe.formats.datetime,1e3*s),a=(0,l.sprintf)("Resets on %1$s",a)),(0,X.jsxs)("div",{className:"autoshare-for-twitter-rate-monitor__rate",children:[(0,X.jsxs)("p",{className:"autoshare-for-twitter-rate-monitor__rate-limit",children:[(0,X.jsx)(n.Tooltip,{text:o,children:(0,X.jsx)("strong",{children:e})})," ",(0,l.sprintf)(/* translators: %1$s: Remaining, %2$s: Limit */ /* translators: %1$s: Remaining, %2$s: Limit */ 4 (0,l.__)("%1$s of %2$s requests remaining","autoshare-for-twitter"),null!=t?t:(0,l.__)("N/A","autoshare-for-twitter"),null!=r?r:(0,l.__)("N/A","autoshare-for-twitter"))]}),(0,X.jsx)("p",{className:"autoshare-for-twitter-rate-monitor__rate-reset",children:a})]})}const je=({errorMessage:e})=>(0,X.jsxs)("span",{children:[e," ",e?.includes("When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer App that is attached to a Project. You can create a project via the developer portal.")&&(0,X.jsx)(n.ExternalLink,{href:"https://developer.twitter.com/en/docs/twitter-api/migrate/ready-to-migrate",children:(0,l.__)("Learn more here.","autoshare-for-twitter")})]});function ve({messages:e}){return e&&e.message.length?(0,X.jsxs)("div",{className:"autoshare-for-twitter-post-status",children:[e.message.map((e,t)=>{const r=H(e.status);return(0,X.jsxs)("div",{className:"autoshare-for-twitter-log",children:[r,(0,X.jsxs)("span",{children:[e.url?(0,X.jsx)(n.ExternalLink,{href:e.url,children:e.message}):(0,X.jsx)(je,{errorMessage:e.message}),!!e.handle&&(0,X.jsx)("strong",{children:" - @"+e.handle})]})]},t)}),(0,X.jsx)(n.CardDivider,{})]}):null}function Ae(){const[e,t]=se(),[r,s]=function(){const{overriding:e}=(0,i.useSelect)(e=>({overriding:e(F).getOverriding()})),{setOverriding:t}=(0,i.useDispatch)(F);return[e,t]}(),[o,a]=oe(),[c]=ie(),u=ne(),d=(0,i.select)("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status");return le(),(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ve,{messages:d}),(0,X.jsx)(n.ToggleControl,{label:e?(0,l.__)("Post to X/Twitter when published","autoshare-for-twitter"):(0,l.__)("Don't post to X/Twitter","autoshare-for-twitter"),checked:e,onChange:e=>{t(e)},className:"autoshare-for-twitter-toggle-control"}),e&&u&&(0,X.jsx)(n.ToggleControl,{label:(0,l.__)("Use featured image in Post to X/Twitter","autoshare-for-twitter"),checked:o,onChange:()=>{a(!o)},className:"autoshare-for-twitter-toggle-control"}),e&&(0,X.jsx)(_e,{}),e&&(0,X.jsxs)("div",{className:"autoshare-for-twitter-prepublish__override-row",children:[r&&(0,X.jsx)(he,{}),(0,X.jsx)(n.Button,{isLink:!0,onClick:()=>{s(!r)},children:r?(0,l.__)("Hide","autoshare-for-twitter"):(0,l.__)("Edit","autoshare-for-twitter")})]}),(0,X.jsx)("div",{children:c})]})}const Se=(0,window.wp.compose.compose)((0,i.withSelect)(e=>({statusMessage:e("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status")})))(function(){const e=ne(),[t,r]=oe(),[,o]=re(),[a,c]=(0,s.useState)(!1),[u,d]=(0,s.useState)(!1),{messages:h}=(0,i.useSelect)(e=>({messages:e("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status")})),[w,g]=(0,s.useState)(h);if(le(),w&&!w.message.length)return null;const m=(0,X.jsx)(n.Icon,{icon:(0,X.jsx)("svg",{viewBox:"0 0 28 28",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28","aria-hidden":"true",focusable:"false",children:(0,X.jsx)("path",{d:"M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z"})})}),p=(0,X.jsx)(n.Icon,{icon:(0,X.jsx)("svg",{viewBox:"0 0 28 28",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28","aria-hidden":"true",focusable:"false",children:(0,X.jsx)("path",{d:"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"})})});return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ve,{messages:w}),(0,X.jsx)(n.Button,{className:"autoshare-for-twitter-tweet-now",variant:"link",text:(0,l.__)("Post to X/Twitter now","autoshare-for-twitter"),onClick:()=>d(!u),iconPosition:"right",icon:u?m:p}),u&&(0,X.jsxs)(X.Fragment,{children:[e&&(0,X.jsx)(n.ToggleControl,{label:(0,l.__)("Use featured image in Post to X/Twitter","autoshare-for-twitter"),checked:t,onChange:()=>{r(!t)},className:"autoshare-for-twitter-toggle-control"}),(0,X.jsx)(_e,{}),(0,X.jsx)(he,{}),(0,X.jsx)(n.Button,{variant:"primary",className:"autoshare-for-twitter-re-tweet",text:a?(0,l.__)("Posting to X/Twitter…","autoshare-for-twitter"):(0,l.__)("Post to X/Twitter","autoshare-for-twitter"),onClick:()=>{(async()=>{c(!0);const e=await(0,i.select)("core/editor").getCurrentPostId(),t=new FormData;t.append("action",adminAutoshareForTwitter.retweetAction),t.append("nonce",adminAutoshareForTwitter.nonce),t.append("post_id",e);const r=await fetch(ajaxurl,{method:"POST",body:t}),{data:s}=await r.json();s.is_retweeted&&o(""),g(s),c(!1)})()}})]})]})});(0,i.registerStore)(F,{reducer:function(e=b,t){switch(t.type){case c:return{...e,autoshareEnabled:t.autoshareEnabled};case u:return{...e,errorMessage:t.errorMessage};case d:return{...e,loaded:!0};case h:return{...e,overriding:t.overriding};case w:return{...e,saving:t.saving};case g:return{...e,tweetText:t.tweetText};case m:return{...e,allowTweetImage:t.allowTweetImage};case p:return{...e,tweetAccounts:t.tweetAccounts}}},actions:t,selectors:r});class ye extends s.Component{constructor(e){super(e),this.state={enabledText:""},this.maybeSetEnabledText=this.maybeSetEnabledText.bind(this)}componentDidMount(){(0,i.dispatch)(F).setLoaded(),(0,i.subscribe)(this.maybeSetEnabledText)}maybeSetEnabledText(){try{const e=(0,i.select)(F).getAutoshareEnabled(),t=e?(0,l.__)("This post will be posted to X/Twitter","autoshare-for-twitter"):(0,l.__)("This post will not be posted to X/Twitter","autoshare-for-twitter");t!==this.state.enabledText&&this.setState({enabled:e,enabledText:t})}catch(e){}}render(){const{enabled:e,enabledText:t}=this.state,r=e?U:W,s=(0,X.jsx)(n.Icon,{className:"autoshare-for-twitter-icon components-panel__icon",icon:r,size:24});return(0,X.jsx)(a.PluginPrePublishPanel,{title:t,icon:s,className:"autoshare-for-twitter-pre-publish-panel",children:(0,X.jsx)(Ae,{})})}}class Ee extends s.Component{constructor(e){super(e),this.state={enabledText:""},this.maybeSetEnabledText=this.maybeSetEnabledText.bind(this)}componentDidMount(){(0,i.dispatch)(F).setLoaded(),(0,i.subscribe)(this.maybeSetEnabledText)}maybeSetEnabledText(){try{const e=(0,i.select)(F).getAutoshareEnabled(),t=e?(0,l.__)("Autopost to X/Twitter enabled","autoshare-for-twitter"):(0,l.__)("Autopost to X/Twitter disabled","autoshare-for-twitter");t!==this.state.enabledText&&this.setState({enabledText:t,enabled:e})}catch(e){}}render(){if("publish"===(0,i.select)("core/editor").getCurrentPostAttribute("status")){const e=(0,i.select)("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status");let t="";return e&&e.message&&e.message.length&&(t=e.message[e.message.length-1].status||""),(0,X.jsx)(a.PluginDocumentSettingPanel,{title:(0,l.__)("Autopost to X/Twitter","autoshare-for-twitter"),icon:H(t),className:"autoshare-for-twitter-editor-panel",children:(0,X.jsx)(Se,{})})}const{enabled:e,enabledText:t}=this.state,r=e?U:W,s=(0,X.jsx)(n.Icon,{className:"autoshare-for-twitter-icon components-panel__icon",icon:r,size:24});return(0,X.jsx)(a.PluginDocumentSettingPanel,{title:t,icon:s,className:"autoshare-for-twitter-editor-panel",children:(0,X.jsx)(Ae,{})})}}(0,o.registerPlugin)("autoshare-for-twitter-editor-panel",{render:Ee}),(0,o.registerPlugin)("autoshare-for-twitter-pre-publish-panel",{render:ye}),(0,o.registerPlugin)("autoshare-for-twitter-post-publish-panel",{render:()=>(0,X.jsx)(a.PluginPostPublishPanel,{className:"my-plugin-post-status-info",children:(0,X.jsx)(Se,{})})})})(); -
autoshare-for-twitter/tags/2.3.2/includes/admin/post-transition.php
r2956880 r3449105 102 102 $post = get_post( $post_id ); 103 103 104 // Ensure we have a valid $post object. 105 if ( ! $post ) { 106 return false; 107 } 108 109 // Ensure the user has edit permissions on the post. 110 if ( ! current_user_can( 'edit_post', $post->ID ) ) { 111 return false; 112 } 113 104 114 /* 105 115 * Don't bother enqueuing assets if the post type hasn't opted into autosharing … … 111 121 // Don't publish tweets from staging/testing sites. 112 122 if ( ! AST_Staging::is_production_site() ) { 113 return false;114 }115 116 // Ensure we have a $post object.117 if ( ! $post ) {118 123 return false; 119 124 } … … 190 195 */ 191 196 function retweet() { 197 // Ensure the nonce is valid. 192 198 if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'wp_rest' ) ) { 193 199 wp_send_json_error( __( 'Nonce verification failed.', 'autoshare-for-twitter' ) ); 194 200 } 195 201 196 $post_id = isset( $_POST['post_id'] ) ? absint( $_POST['post_id'] ) : 0; 202 // Ensure we have a post ID. 203 $post_id = isset( $_POST['post_id'] ) ? absint( $_POST['post_id'] ) : 0; 204 205 if ( 0 === $post_id ) { 206 wp_send_json_error( __( 'Invalid post ID.', 'autoshare-for-twitter' ) ); 207 } 208 209 // Ensure the user has edit permissions on the post. 210 if ( ! current_user_can( 'edit_post', $post_id ) ) { 211 wp_send_json_error( __( 'You do not have permission to retweet this post.', 'autoshare-for-twitter' ) ); 212 } 213 214 // Publish the tweet. 197 215 $is_retweeted = publish_tweet( $post_id, true ); 198 216 -
autoshare-for-twitter/tags/2.3.2/readme.txt
r3432284 r3449105 2 2 Contributors: 10up, johnwatkins0, adamsilverstein, scottlee, dinhtungdu, jeffpaul, dharm1025 3 3 Tags: twitter, tweet, share, social media, posse 4 Requires at least: 6. 64 Requires at least: 6.8 5 5 Tested up to: 6.9 6 Stable tag: 2.3. 16 Stable tag: 2.3.2 7 7 License: GPL-2.0-or-later 8 8 License URI: https://spdx.org/licenses/GPL-2.0-or-later.html … … 102 102 To avoid encountering this error in the future and to have higher usage limits, we recommend considering a subscription to either the Basic or Pro access level. These access levels provide increased quotas and additional benefits to accommodate your needs. For more information on X/Twitter API access levels, you can visit this link: https://developer.x.com/en/products/x-api. 103 103 104 = Where do I report security bugs found in this plugin? = 105 106 Please report security bugs found in the source code of the Autoshare for Twitter plugin through the [Patchstack Vulnerability Disclosure Program](https://patchstack.com/database/vdp/9e5fba6a-26c2-4dd7-a2ae-b8628c65835e). The Patchstack team will assist you with verification, CVE assignment, and notify the developers of this plugin. 107 104 108 == Screenshots == 105 109 … … 110 114 111 115 == Changelog == 116 117 = 2.3.2 - 2026-01-29 = 118 **Note that this version bumps the WordPress minimum supported version from 6.6 to 6.8.** 119 120 * **Security:** Fix access control issue for retweeting (props [@nblirwn](https://github.com/nblirwn), [@dkotter](https://github.com/dkotter), [@peterwilsoncc](https://github.com/peterwilsoncc), [@jeffpaul](https://github.com/jeffpaul) via [GHSA-9j39-fp7c-5453](https://github.com/10up/autoshare-for-twitter/security/advisories/GHSA-9j39-fp7c-5453)). 121 * **Added:** Support for the WordPress.org plugin preview (props [@dkotter](https://github.com/dkotter), [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul) via [#297](https://github.com/10up/autoshare-for-twitter/pull/297)). 122 * **Changed:** Bumped WordPress "tested up to" version 6.9 (props [@peterwilsoncc](https://github.com/peterwilsoncc), [@dkotter](https://github.com/dkotter) via [#390](https://github.com/10up/autoshare-for-twitter/pull/390)). 123 * **Changed:** Bumped WordPress minimum supported version from 6.6 to 6.8 (props [@jeffpaul](https://github.com/jeffpaul) via [#397](https://github.com/10up/autoshare-for-twitter/pull/397)). 124 * **Changed:** Updated npm dependencies via `npm audit fix` (props [@peterwilsoncc](https://github.com/peterwilsoncc), [@dkotter](https://github.com/dkotter) via [#392](https://github.com/10up/autoshare-for-twitter/pull/392)). 125 * **Fixed:** Clear tweet text field only after post publish completes in block editor (props [@chandrapatel](https://github.com/chandrapatel), [@iamdharmesh](https://github.com/iamdharmesh) via [#378](https://github.com/10up/autoshare-for-twitter/pull/378)). 112 126 113 127 = 2.3.1 - 2025-07-14 = … … 136 150 * **Security:** Bump `ws` from 7.5.10 to 8.18.0, `serve-static` from 1.15.0 to 1.16.2 and `express` from 4.19.2 to 4.21.0 (props [@dependabot](https://github.com/apps/dependabot), [@Sidsector9](https://github.com/Sidsector9) via [#343](https://github.com/10up/autoshare-for-twitter/pull/343)). 137 151 138 = 2.2.1 - 2024-07-08 =139 * **Changed:** Bump WordPress "tested up to" version 6.5 (props [@iamdharmesh](https://github.com/iamdharmesh), [@dkotter](https://github.com/dkotter), [@sudip-md](https://github.com/sudip-md), [@jeffpaul](https://github.com/jeffpaul) via [#319](https://github.com/10up/autoshare-for-twitter/pull/319)).140 * **Fixed:** Ampersands no longer converted to HTML entities when adding query parameters to the post URL with the `autoshare_for_twitter_post_url` filter (props [@justinmaurerdotdev](https://github.com/justinmaurerdotdev), [@iamdharmesh](https://github.com/iamdharmesh) via [#324](https://github.com/10up/autoshare-for-twitter/pull/324)).141 * **Security:** Bump `express` from 4.18.2 to 4.19.2 (props [@dependabot](https://github.com/apps/dependabot), [@iamdharmesh](https://github.com/iamdharmesh) via [#321](https://github.com/10up/autoshare-for-twitter/pull/321)).142 * **Security:** Bump `follow-redirects` from 1.15.5 to 1.15.6 (props [@dependabot](https://github.com/apps/dependabot), [@iamdharmesh](https://github.com/iamdharmesh) via [#321](https://github.com/10up/autoshare-for-twitter/pull/321)).143 * **Security:** Bump `ip` from 1.1.8 to 1.1.9 (props [@dependabot](https://github.com/apps/dependabot), [@iamdharmesh](https://github.com/iamdharmesh) via [#321](https://github.com/10up/autoshare-for-twitter/pull/321)).144 * **Security:** Bump `webpack-dev-middleware` from 5.3.3 to 5.3.4 (props [@dependabot](https://github.com/apps/dependabot), [@iamdharmesh](https://github.com/iamdharmesh) via [#321](https://github.com/10up/autoshare-for-twitter/pull/321)).145 146 152 Further changelog entries can be found in the [CHANGELOG.md](https://github.com/10up/autoshare-for-twitter/blob/trunk/CHANGELOG.md) file. 147 153 148 154 == Upgrade Notice == 155 156 = 2.3.2 = 157 Security release: this patches an access control issue with retweets. Please upgrade promptly. This release bumps the WordPress minimum from 6.6 to 6.8. 149 158 150 159 = 2.3.1 = -
autoshare-for-twitter/tags/2.3.2/vendor/autoload.php
r3327663 r3449105 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit10upAutoshareForTwitterV23 1::getLoader();22 return ComposerAutoloaderInit10upAutoshareForTwitterV232::getLoader(); -
autoshare-for-twitter/tags/2.3.2/vendor/composer/autoload_real.php
r3327663 r3449105 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit10upAutoshareForTwitterV23 15 class ComposerAutoloaderInit10upAutoshareForTwitterV232 6 6 { 7 7 private static $loader; … … 23 23 } 24 24 25 spl_autoload_register(array('ComposerAutoloaderInit10upAutoshareForTwitterV23 1', 'loadClassLoader'), true, true);25 spl_autoload_register(array('ComposerAutoloaderInit10upAutoshareForTwitterV232', 'loadClassLoader'), true, true); 26 26 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 27 spl_autoload_unregister(array('ComposerAutoloaderInit10upAutoshareForTwitterV23 1', 'loadClassLoader'));27 spl_autoload_unregister(array('ComposerAutoloaderInit10upAutoshareForTwitterV232', 'loadClassLoader')); 28 28 29 29 require __DIR__ . '/autoload_static.php'; 30 call_user_func(\Composer\Autoload\ComposerStaticInit10upAutoshareForTwitterV23 1::getInitializer($loader));30 call_user_func(\Composer\Autoload\ComposerStaticInit10upAutoshareForTwitterV232::getInitializer($loader)); 31 31 32 32 $loader->register(true); -
autoshare-for-twitter/tags/2.3.2/vendor/composer/autoload_static.php
r3327663 r3449105 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit10upAutoshareForTwitterV23 17 class ComposerStaticInit10upAutoshareForTwitterV232 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( 10 'C' => 10 'C' => 11 11 array ( 12 12 'Composer\\CaBundle\\' => 18, 13 13 ), 14 'A' => 14 'A' => 15 15 array ( 16 16 'Abraham\\TwitterOAuth\\' => 21, … … 19 19 20 20 public static $prefixDirsPsr4 = array ( 21 'Composer\\CaBundle\\' => 21 'Composer\\CaBundle\\' => 22 22 array ( 23 23 0 => __DIR__ . '/..' . '/composer/ca-bundle/src', 24 24 ), 25 'Abraham\\TwitterOAuth\\' => 25 'Abraham\\TwitterOAuth\\' => 26 26 array ( 27 27 0 => __DIR__ . '/..' . '/abraham/twitteroauth/src', … … 48 48 { 49 49 return \Closure::bind(function () use ($loader) { 50 $loader->prefixLengthsPsr4 = ComposerStaticInit10upAutoshareForTwitterV23 1::$prefixLengthsPsr4;51 $loader->prefixDirsPsr4 = ComposerStaticInit10upAutoshareForTwitterV23 1::$prefixDirsPsr4;52 $loader->classMap = ComposerStaticInit10upAutoshareForTwitterV23 1::$classMap;50 $loader->prefixLengthsPsr4 = ComposerStaticInit10upAutoshareForTwitterV232::$prefixLengthsPsr4; 51 $loader->prefixDirsPsr4 = ComposerStaticInit10upAutoshareForTwitterV232::$prefixDirsPsr4; 52 $loader->classMap = ComposerStaticInit10upAutoshareForTwitterV232::$classMap; 53 53 54 54 }, null, ClassLoader::class); -
autoshare-for-twitter/tags/2.3.2/vendor/composer/installed.php
r3327663 r3449105 2 2 'root' => array( 3 3 'name' => '10up/autoshare-for-twitter', 4 'pretty_version' => '2.3. 1',5 'version' => '2.3. 1.0',6 'reference' => ' f0ac633ecc04caa191eeccadfe1edb40c4151344',4 'pretty_version' => '2.3.2', 5 'version' => '2.3.2.0', 6 'reference' => '2bc26a29159a83a1ce4388a71ef21b2369f22382', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 '10up/autoshare-for-twitter' => array( 14 'pretty_version' => '2.3. 1',15 'version' => '2.3. 1.0',16 'reference' => ' f0ac633ecc04caa191eeccadfe1edb40c4151344',14 'pretty_version' => '2.3.2', 15 'version' => '2.3.2.0', 16 'reference' => '2bc26a29159a83a1ce4388a71ef21b2369f22382', 17 17 'type' => 'wordpress-plugin', 18 18 'install_path' => __DIR__ . '/../../', -
autoshare-for-twitter/trunk/autoshare-for-twitter.php
r3327663 r3449105 4 4 * Description: Automatically shares the post title or custom message and a link to the post to X/Twitter. 5 5 * Disclaimer: TWITTER, TWEET, RETWEET and the Twitter logo are trademarks of Twitter, Inc. or its affiliates. 6 * Version: 2.3. 17 * Requires at least: 6. 66 * Version: 2.3.2 7 * Requires at least: 6.8 8 8 * Requires PHP: 7.4 9 9 * Author: 10up … … 23 23 24 24 define( 'AUTOSHARE_FOR_TWITTER', __FILE__ ); 25 define( 'AUTOSHARE_FOR_TWITTER_VERSION', '2.3. 1' );25 define( 'AUTOSHARE_FOR_TWITTER_VERSION', '2.3.2' ); 26 26 define( 'AUTOSHARE_FOR_TWITTER_URL', plugin_dir_url( __FILE__ ) ); 27 27 define( 'AUTOSHARE_FOR_TWITTER_PATH', plugin_dir_path( __FILE__ ) ); -
autoshare-for-twitter/trunk/dist/autoshare-for-twitter.asset.php
r3327663 r3449105 1 <?php return array('dependencies' => array('lodash', 'react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-date', 'wp-edit-post', 'wp-element', 'wp-i18n', 'wp-plugins', 'wp-primitives'), 'version' => 'd 9b56b74e9cf28181dfd');1 <?php return array('dependencies' => array('lodash', 'react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-date', 'wp-edit-post', 'wp-element', 'wp-i18n', 'wp-plugins', 'wp-primitives'), 'version' => 'da37bd91155b3fa9601f'); -
autoshare-for-twitter/trunk/dist/autoshare-for-twitter.js
r3327663 r3449105 1 (()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var s in r)e.o(r,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:r[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{setAllowTweetImage:()=>P,setAutoshareEnabled:()=>j,setErrorMessage:()=>v,setLoaded:()=>A,setOverriding:()=>S,setSaving:()=>y,setTweetAccounts:()=>L,setTweetText:()=>E});var r={};e.r(r),e.d(r,{getAllowTweetImage:()=>D,getAutoshareEnabled:()=>k,getErrorMessage:()=>N,getOverriding:()=>C,getSaving:()=>I,getTweetAccounts:()=>O,getTweetText:()=>M});const s=window.wp.element, a=window.wp.plugins,o=window.wp.editPost,i=window.wp.data,n=window.wp.components,l=window.wp.i18n,c="SET_AUTOSHARE_FOR_TWITTER_ENABLED",u="SET_ERROR_MESSAGE",d="SET_LOADED",h="SET_OVERRIDING",w="SET_SAVING",g="SET_TWEET_TEXT",m="SET_ALLOW_TWEET_IMAGE",p="SET_TWEET_ACCOUNTS",{enabled:_,allowTweetImage:f,tweetAccounts:x,customTweetBody:T}=adminAutoshareForTwitter,b={autoshareEnabled:!!_&&"0"!==_,errorMessage:"",loaded:!1,overriding:!!T,overrideLength:0,tweetText:T||"",allowTweetImage:!!f,tweetAccounts:x||[]};const j=e=>({type:c,autoshareEnabled:e}),v=e=>({type:u,errorMessage:e}),A=()=>({type:d}),S=e=>({type:h,overriding:e}),y=e=>({type:w,saving:e}),E=e=>({type:g,tweetText:e}),P=e=>({type:m,allowTweetImage:e}),L=e=>({type:p,tweetAccounts:e}),k=e=>e.autoshareEnabled,N=e=>e.errorMessage,C=e=>e.overriding,I=e=>e.saving,M=e=>e.tweetText,D=e=>e.allowTweetImage,O=e=>e.tweetAccounts||[],F="10up/autoshare",X=window.wp.primitives,R=window.ReactJSXRuntime,z=e=>(0,R.jsx)(X.SVG,{version:"1.1",xmlSpace:"preserve",width:256,height:256,viewBox:"0 0 256 256",children:(0,R.jsxs)("g",{style:{stroke:"none",strokeWidth:0,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"none",fillRule:"nonzero",opacity:1},children:[(0,R.jsx)("path",{d:"M45 90C20.147 90 0 69.853 0 45S20.147 0 45 0s45 20.147 45 45-20.147 45-45 45z",style:{stroke:"none",strokeWidth:1,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:e,fillRule:"nonzero",opacity:1},transform:"matrix(2.33 0 0 2.33 22.612 22.612)"}),(0,R.jsx)("path",{d:"M17.884 19.496 38.925 47.63 17.751 70.504h4.765l18.538-20.027 14.978 20.027h16.217L50.024 40.788l19.708-21.291h-4.765L47.895 37.94 34.101 19.496H17.884zm7.008 3.51h7.45L65.24 66.993h-7.45L24.892 23.006z",style:{stroke:"none",strokeWidth:1,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"#fff",fillRule:"nonzero",opacity:1},transform:"matrix(2.33 0 0 2.33 22.612 22.612)"})]})}),B=z("#1B1C20"),U=z("#1DA1F2"),W=z("#787E88"),$=z("#D0494A"),G=z("#7FD051"),H=e=>{let t=B;return e&&(t="published"===e?G:"error"===e?$:B),(0,R.jsx)(n.Icon,{className:"autoshare-for-twitter-icon",icon:t,size:48})},K=window.wp.apiFetch;var q=e.n(K);const V=window.lodash,{enableAutoshareKey:J,errorText:Y,restUrl:Q,tweetBodyKey:Z,allowTweetImageKey:ee,tweetAccountsKey:te}=adminAutoshareForTwitter;function re(){const{tweetText:e}=(0,i.useSelect)((e=>({tweetText:e(F).getTweetText()}))),{setTweetText:t}=(0,i.useDispatch)(F);return[e,t]}function se(){const{autoshareEnabled:e}=(0,i.useSelect)((e=>({autoshareEnabled:e(F).getAutoshareEnabled()}))),{setAutoshareEnabled:t}=(0,i.useDispatch)(F);return[e,t]}function ae(){const{allowTweetImage:e}=(0,i.useSelect)((e=>({allowTweetImage:e(F).getAllowTweetImage()}))),{setAllowTweetImage:t}=(0,i.useDispatch)(F);return[e,t]}function oe(){const{tweetAccounts:e}=(0,i.useSelect)((e=>({tweetAccounts:e(F).getTweetAccounts()}))),{setTweetAccounts:t}=(0,i.useDispatch)(F);return[e,t]}function ie(){const{errorMessage:e}=(0,i.useSelect)((e=>({errorMessage:e(F).getErrorMessage()}))),{setErrorMessage:t}=(0,i.useDispatch)(F);return[e,t]}function ne(){const{imageId:e}=(0,i.useSelect)((e=>({imageId:e("core/editor").getEditedPostAttribute("featured_media")})));return e>0}function le(){const[e]=se(),[t]=ae(),[r]=oe(),[a]=re(),[,o]=ie(),[,n]=function(){const{saving:e}=(0,i.useSelect)((e=>({saving:e(F).getSaving()})));return[e,function(e){(0,i.dispatch)(F).setSaving(e),e?(0,i.dispatch)("core/editor").lockPostSaving():(0,i.dispatch)("core/editor").unlockPostSaving()}]}(),{hasFeaturedImage:c}=(0,i.useSelect)((e=>({hasFeaturedImage:e("core/editor").getEditedPostAttribute("featured_media")>0}))),u=(0,s.useCallback)((0,V.debounce)((async function(e,t,r,s){const a={};a[J]=e,a[Z]=t,a[ee]=r,a[te]=s||[];try{n(!0);const e=await q()({url:Q,data:a,method:"POST",parse:!1});if(!e.ok)throw e;await e.json(),o(""),n(!1)}catch(e){o(e.statusText?`${Y} ${e.status}: ${e.statusText}`:(0,l.__)("An error occurred.","autoshare-for-twitter")),n(!1)}}),250),[]);(0,s.useEffect)((()=>{u(e,a,t,r)}),[e,a,c,t,r,u])}const{siteUrl:ce,isLocalSite:ue,twitterURLLength:de}=adminAutoshareForTwitter;function he(){const e=e=>{if(!ue&&!isNaN(de))return Number(de);const t=e("core/editor").getPermalink();if(t)return t.length;const r=e("core/editor").getEditedPostAttribute("title");return r&&"rendered"in r?(ce+r.rendered).length:ce.length},{permalinkLength:t,maxLength:r}=(0,i.useSelect)((t=>({permalinkLength:e(t),maxLength:275-e(t)}))),[a,o]=re(),{tweetLength:c,overrideLengthClass:u}=(()=>{const e=t+a.length+5;return 280<=e?{tweetLength:(0,l.sprintf)(/* translators: %d is tweet message character count */ /* translators: %d is tweet message character count */1 (()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var s in r)e.o(r,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:r[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{setAllowTweetImage:()=>P,setAutoshareEnabled:()=>j,setErrorMessage:()=>v,setLoaded:()=>A,setOverriding:()=>S,setSaving:()=>y,setTweetAccounts:()=>L,setTweetText:()=>E});var r={};e.r(r),e.d(r,{getAllowTweetImage:()=>D,getAutoshareEnabled:()=>k,getErrorMessage:()=>N,getOverriding:()=>C,getSaving:()=>I,getTweetAccounts:()=>O,getTweetText:()=>M});const s=window.wp.element,o=window.wp.plugins,a=window.wp.editPost,i=window.wp.data,n=window.wp.components,l=window.wp.i18n,c="SET_AUTOSHARE_FOR_TWITTER_ENABLED",u="SET_ERROR_MESSAGE",d="SET_LOADED",h="SET_OVERRIDING",w="SET_SAVING",g="SET_TWEET_TEXT",m="SET_ALLOW_TWEET_IMAGE",p="SET_TWEET_ACCOUNTS",{enabled:_,allowTweetImage:f,tweetAccounts:x,customTweetBody:T}=adminAutoshareForTwitter,b={autoshareEnabled:!!_&&"0"!==_,errorMessage:"",loaded:!1,overriding:!!T,overrideLength:0,tweetText:T||"",allowTweetImage:!!f,tweetAccounts:x||[]};const j=e=>({type:c,autoshareEnabled:e}),v=e=>({type:u,errorMessage:e}),A=()=>({type:d}),S=e=>({type:h,overriding:e}),y=e=>({type:w,saving:e}),E=e=>({type:g,tweetText:e}),P=e=>({type:m,allowTweetImage:e}),L=e=>({type:p,tweetAccounts:e}),k=e=>e.autoshareEnabled,N=e=>e.errorMessage,C=e=>e.overriding,I=e=>e.saving,M=e=>e.tweetText,D=e=>e.allowTweetImage,O=e=>e.tweetAccounts||[],F="10up/autoshare",R=window.wp.primitives,X=window.ReactJSXRuntime,z=e=>(0,X.jsx)(R.SVG,{version:"1.1",xmlSpace:"preserve",width:256,height:256,viewBox:"0 0 256 256",children:(0,X.jsxs)("g",{style:{stroke:"none",strokeWidth:0,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"none",fillRule:"nonzero",opacity:1},children:[(0,X.jsx)("path",{d:"M45 90C20.147 90 0 69.853 0 45S20.147 0 45 0s45 20.147 45 45-20.147 45-45 45z",style:{stroke:"none",strokeWidth:1,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:e,fillRule:"nonzero",opacity:1},transform:"matrix(2.33 0 0 2.33 22.612 22.612)"}),(0,X.jsx)("path",{d:"M17.884 19.496 38.925 47.63 17.751 70.504h4.765l18.538-20.027 14.978 20.027h16.217L50.024 40.788l19.708-21.291h-4.765L47.895 37.94 34.101 19.496H17.884zm7.008 3.51h7.45L65.24 66.993h-7.45L24.892 23.006z",style:{stroke:"none",strokeWidth:1,strokeDasharray:"none",strokeLinecap:"butt",strokeLinejoin:"miter",strokeMiterlimit:10,fill:"#fff",fillRule:"nonzero",opacity:1},transform:"matrix(2.33 0 0 2.33 22.612 22.612)"})]})}),B=z("#1B1C20"),U=z("#1DA1F2"),W=z("#787E88"),$=z("#D0494A"),G=z("#7FD051"),H=e=>{let t=B;return e&&(t="published"===e?G:"error"===e?$:B),(0,X.jsx)(n.Icon,{className:"autoshare-for-twitter-icon",icon:t,size:48})},K=window.wp.apiFetch;var q=e.n(K);const V=window.lodash,{enableAutoshareKey:J,errorText:Y,restUrl:Q,tweetBodyKey:Z,allowTweetImageKey:ee,tweetAccountsKey:te}=adminAutoshareForTwitter;function re(){const{tweetText:e}=(0,i.useSelect)(e=>({tweetText:e(F).getTweetText()})),{setTweetText:t}=(0,i.useDispatch)(F);return[e,t]}function se(){const{autoshareEnabled:e}=(0,i.useSelect)(e=>({autoshareEnabled:e(F).getAutoshareEnabled()})),{setAutoshareEnabled:t}=(0,i.useDispatch)(F);return[e,t]}function oe(){const{allowTweetImage:e}=(0,i.useSelect)(e=>({allowTweetImage:e(F).getAllowTweetImage()})),{setAllowTweetImage:t}=(0,i.useDispatch)(F);return[e,t]}function ae(){const{tweetAccounts:e}=(0,i.useSelect)(e=>({tweetAccounts:e(F).getTweetAccounts()})),{setTweetAccounts:t}=(0,i.useDispatch)(F);return[e,t]}function ie(){const{errorMessage:e}=(0,i.useSelect)(e=>({errorMessage:e(F).getErrorMessage()})),{setErrorMessage:t}=(0,i.useDispatch)(F);return[e,t]}function ne(){const{imageId:e}=(0,i.useSelect)(e=>({imageId:e("core/editor").getEditedPostAttribute("featured_media")}));return e>0}function le(){const[e]=se(),[t]=oe(),[r]=ae(),[o]=re(),[,a]=ie(),[,n]=function(){const{saving:e}=(0,i.useSelect)(e=>({saving:e(F).getSaving()}));return[e,function(e){(0,i.dispatch)(F).setSaving(e),e?(0,i.dispatch)("core/editor").lockPostSaving():(0,i.dispatch)("core/editor").unlockPostSaving()}]}(),{hasFeaturedImage:c}=(0,i.useSelect)(e=>({hasFeaturedImage:e("core/editor").getEditedPostAttribute("featured_media")>0})),u=(0,s.useCallback)((0,V.debounce)(async function(e,t,r,s){const o={};o[J]=e,o[Z]=t,o[ee]=r,o[te]=s||[];try{n(!0);const e=await q()({url:Q,data:o,method:"POST",parse:!1});if(!e.ok)throw e;await e.json(),a(""),n(!1)}catch(e){a(e.statusText?`${Y} ${e.status}: ${e.statusText}`:(0,l.__)("An error occurred.","autoshare-for-twitter")),n(!1)}},250),[]);(0,s.useEffect)(()=>{u(e,o,t,r)},[e,o,c,t,r,u])}const{siteUrl:ce,isLocalSite:ue,twitterURLLength:de}=adminAutoshareForTwitter;function he(){const e=e=>{if(!ue&&!isNaN(de))return Number(de);const t=e("core/editor").getPermalink();if(t)return t.length;const r=e("core/editor").getEditedPostAttribute("title");return r&&"rendered"in r?(ce+r.rendered).length:ce.length},{permalinkLength:t,maxLength:r}=(0,i.useSelect)(t=>({permalinkLength:e(t),maxLength:275-e(t)})),[o,a]=re(),{tweetLength:c,overrideLengthClass:u}=(()=>{const e=t+o.length+5;return 280<=e?{tweetLength:(0,l.sprintf)(/* translators: %d is tweet message character count */ /* translators: %d is tweet message character count */ 2 2 (0,l.__)("%d - Too Long!","autoshare-for-twitter"),e),overrideLengthClass:"over-limit"}:240<=e?{tweetLength:(0,l.sprintf)(/* translators: %d is tweet message character count */ /* translators: %d is tweet message character count */ 3 (0,l.__)("%d - Getting Long!","autoshare-for-twitter"),e),overrideLengthClass:"near-limit"}:{tweetLength:`${e}`,overrideLengthClass:""}})(),d=(0,i.useSelect)( (e=>e("core/editor").getEditedPostAttribute("status"))),[h,w]=(0,s.useState)("publish"===d);(0,s.useEffect)((()=>{"publish"!==d||h||(o(""),w(!0))}),[d,h]);const g=()=>(0,R.jsx)(n.Tooltip,{text:(0,l.__)("Count is inclusive of the post permalink which will be included in the final tweet.","autoshare-for-twitter"),children:(0,R.jsx)("div",{children:c})});return(0,R.jsx)(n.TextareaControl,{value:a,onChange:e=>{o(e)},className:"autoshare-for-twitter-tweet-text",maxLength:r,label:(0,R.jsxs)("span",{style:{marginTop:"0.5rem",display:"block"},className:"autoshare-for-twitter-prepublish__message-label",children:[(0,R.jsxs)("span",{children:[(0,l.__)("Custom message:","autoshare-for-twitter")," "]}),(0,R.jsx)("span",{id:"autoshare-for-twitter-counter-wrap",className:`alignright ${u}`,children:(0,R.jsx)(g,{})})]})})}const we=window.wp.date,{connectedAccounts:ge,connectAccountUrl:me}=adminAutoshareForTwitter,pe=(0,we.getSettings)();function _e(){const e=ge?Object.values(ge):[],[t]=e,[r]=oe();return(0,R.jsxs)("div",{className:"autoshare-for-twitter-accounts-wrapper",children:[e.map((e=>(0,R.jsx)(fe,{...e},e.id))),t&&r?.length>0&&(0,R.jsx)(Te,{...t}),r?.length>0&&(0,R.jsx)("div",{className:"autoshare-for-twitter-rate-monitor__disclaimer",children:(0,R.jsxs)("p",{children:[(0,R.jsx)("strong",{children:(0,l.__)("Note:","autoshare-for-twitter")})," ",(0,l.__)("The displayed API rate limits are updated only when a tweet is posted. Since there is no dedicated endpoint for real-time usage data, the information provided may not fully reflect the current API usage, especially if other tweets are made through the same app.","autoshare-for-twitter")]})}),(0,R.jsx)("span",{className:"connect-account-link",children:(0,R.jsx)(n.ExternalLink,{href:me,children:(0,l.__)("Connect an account","autoshare-for-twitter")})})]})}function fe(e){const[t,r]=oe(),{id:s,name:a,username:o,profile_image_url:i}=e;return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)("div",{className:"twitter-account-wrapper",children:[(0,R.jsx)("img",{src:i,alt:a,className:"twitter-account-profile-image"}),(0,R.jsxs)("span",{className:"account-details",children:[(0,R.jsxs)("strong",{children:["@",o]}),(0,R.jsx)("br",{}),a]}),(0,R.jsx)(n.ToggleControl,{checked:t&&t.includes(s),onChange:e=>{r(e?[...t,s]:t.filter((e=>e!==s)))},className:"autoshare-for-twitter-account-toggle"})]}),t&&t.includes(s)&&(0,R.jsx)(xe,{...e})]})}function xe({rate_limits:e}){return!e||!e.user_limit_24hour_limit||e?.user_limit_24hour_reset<Math.floor(Date.now()/1e3)?(0,R.jsx)("p",{children:(0,l.__)("No X/Twitter rate limit available yet. Make a post to X/Twitter first.","autoshare-for-twitter")}):(0,R.jsx)("div",{className:"autoshare-for-twitter-rate-monitor__user",children:(0,R.jsx)(be,{title:(0,l.__)("User 24-Hour Limit:","autoshare-for-twitter"),remaining:e?.user_limit_24hour_remaining,limit:e?.user_limit_24hour_limit,reset:e?.user_limit_24hour_reset,tooltip:(0,l.__)("The maximum number of requests a single user can make across all API endpoints within a 24-hour period.","autoshare-for-twitter")})})}function Te({rate_limits:e}){return!e||!e.app_limit_24hour_limit||e?.app_limit_24hour_reset<Math.floor(Date.now()/1e3)?null:(0,R.jsx)("div",{className:"autoshare-for-twitter-rate-monitor__app",children:(0,R.jsx)(be,{title:(0,l.__)("App 24-Hour Limit:","autoshare-for-twitter"),remaining:e?.app_limit_24hour_remaining,limit:e?.app_limit_24hour_limit,reset:e?.app_limit_24hour_reset,tooltip:(0,l.__)("The total number of API calls your app can make across all users within a 24-hour period.","autoshare-for-twitter")})})}function be({title:e,remaining:t,limit:r,reset:s,tooltip:a}){let o=(0,l.__)("N/A","autoshare-for-twitter");return s&&pe?.formats?.datetime&&(o=(0,we.dateI18n)(pe.formats.datetime,1e3*s),o=(0,l.sprintf)("Resets on %1$s",o)),(0,R.jsxs)("div",{className:"autoshare-for-twitter-rate-monitor__rate",children:[(0,R.jsxs)("p",{className:"autoshare-for-twitter-rate-monitor__rate-limit",children:[(0,R.jsx)(n.Tooltip,{text:a,children:(0,R.jsx)("strong",{children:e})})," ",(0,l.sprintf)(/* translators: %1$s: Remaining, %2$s: Limit */ /* translators: %1$s: Remaining, %2$s: Limit */4 (0,l.__)("%1$s of %2$s requests remaining","autoshare-for-twitter"),null!=t?t:(0,l.__)("N/A","autoshare-for-twitter"),null!=r?r:(0,l.__)("N/A","autoshare-for-twitter"))]}),(0, R.jsx)("p",{className:"autoshare-for-twitter-rate-monitor__rate-reset",children:o})]})}const je=({errorMessage:e})=>(0,R.jsxs)("span",{children:[e," ",e?.includes("When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer App that is attached to a Project. You can create a project via the developer portal.")&&(0,R.jsx)(n.ExternalLink,{href:"https://developer.twitter.com/en/docs/twitter-api/migrate/ready-to-migrate",children:(0,l.__)("Learn more here.","autoshare-for-twitter")})]});function ve({messages:e}){return e&&e.message.length?(0,R.jsxs)("div",{className:"autoshare-for-twitter-post-status",children:[e.message.map(((e,t)=>{const r=H(e.status);return(0,R.jsxs)("div",{className:"autoshare-for-twitter-log",children:[r,(0,R.jsxs)("span",{children:[e.url?(0,R.jsx)(n.ExternalLink,{href:e.url,children:e.message}):(0,R.jsx)(je,{errorMessage:e.message}),!!e.handle&&(0,R.jsx)("strong",{children:" - @"+e.handle})]})]},t)})),(0,R.jsx)(n.CardDivider,{})]}):null}function Ae(){const[e,t]=se(),[r,s]=function(){const{overriding:e}=(0,i.useSelect)((e=>({overriding:e(F).getOverriding()}))),{setOverriding:t}=(0,i.useDispatch)(F);return[e,t]}(),[a,o]=ae(),[c]=ie(),u=ne(),d=(0,i.select)("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status");return le(),(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(ve,{messages:d}),(0,R.jsx)(n.ToggleControl,{label:e?(0,l.__)("Post to X/Twitter when published","autoshare-for-twitter"):(0,l.__)("Don't post to X/Twitter","autoshare-for-twitter"),checked:e,onChange:e=>{t(e)},className:"autoshare-for-twitter-toggle-control"}),e&&u&&(0,R.jsx)(n.ToggleControl,{label:(0,l.__)("Use featured image in Post to X/Twitter","autoshare-for-twitter"),checked:a,onChange:()=>{o(!a)},className:"autoshare-for-twitter-toggle-control"}),e&&(0,R.jsx)(_e,{}),e&&(0,R.jsxs)("div",{className:"autoshare-for-twitter-prepublish__override-row",children:[r&&(0,R.jsx)(he,{}),(0,R.jsx)(n.Button,{isLink:!0,onClick:()=>{s(!r)},children:r?(0,l.__)("Hide","autoshare-for-twitter"):(0,l.__)("Edit","autoshare-for-twitter")})]}),(0,R.jsx)("div",{children:c})]})}const Se=(0,window.wp.compose.compose)((0,i.withSelect)((e=>({statusMessage:e("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status")}))))((function(){const e=ne(),[t,r]=ae(),[,a]=re(),[o,c]=(0,s.useState)(!1),[u,d]=(0,s.useState)(!1),{messages:h}=(0,i.useSelect)((e=>({messages:e("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status")}))),[w,g]=(0,s.useState)(h);if(le(),w&&!w.message.length)return null;const m=(0,R.jsx)(n.Icon,{icon:(0,R.jsx)("svg",{viewBox:"0 0 28 28",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28","aria-hidden":"true",focusable:"false",children:(0,R.jsx)("path",{d:"M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z"})})}),p=(0,R.jsx)(n.Icon,{icon:(0,R.jsx)("svg",{viewBox:"0 0 28 28",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28","aria-hidden":"true",focusable:"false",children:(0,R.jsx)("path",{d:"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"})})});return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(ve,{messages:w}),(0,R.jsx)(n.Button,{className:"autoshare-for-twitter-tweet-now",variant:"link",text:(0,l.__)("Post to X/Twitter now","autoshare-for-twitter"),onClick:()=>d(!u),iconPosition:"right",icon:u?m:p}),u&&(0,R.jsxs)(R.Fragment,{children:[e&&(0,R.jsx)(n.ToggleControl,{label:(0,l.__)("Use featured image in Post to X/Twitter","autoshare-for-twitter"),checked:t,onChange:()=>{r(!t)},className:"autoshare-for-twitter-toggle-control"}),(0,R.jsx)(_e,{}),(0,R.jsx)(he,{}),(0,R.jsx)(n.Button,{variant:"primary",className:"autoshare-for-twitter-re-tweet",text:o?(0,l.__)("Posting to X/Twitter…","autoshare-for-twitter"):(0,l.__)("Post to X/Twitter","autoshare-for-twitter"),onClick:()=>{(async()=>{c(!0);const e=await(0,i.select)("core/editor").getCurrentPostId(),t=new FormData;t.append("action",adminAutoshareForTwitter.retweetAction),t.append("nonce",adminAutoshareForTwitter.nonce),t.append("post_id",e);const r=await fetch(ajaxurl,{method:"POST",body:t}),{data:s}=await r.json();s.is_retweeted&&a(""),g(s),c(!1)})()}})]})]})}));(0,i.registerStore)(F,{reducer:function(e=b,t){switch(t.type){case c:return{...e,autoshareEnabled:t.autoshareEnabled};case u:return{...e,errorMessage:t.errorMessage};case d:return{...e,loaded:!0};case h:return{...e,overriding:t.overriding};case w:return{...e,saving:t.saving};case g:return{...e,tweetText:t.tweetText};case m:return{...e,allowTweetImage:t.allowTweetImage};case p:return{...e,tweetAccounts:t.tweetAccounts}}},actions:t,selectors:r});class ye extends s.Component{constructor(e){super(e),this.state={enabledText:""},this.maybeSetEnabledText=this.maybeSetEnabledText.bind(this)}componentDidMount(){(0,i.dispatch)(F).setLoaded(),(0,i.subscribe)(this.maybeSetEnabledText)}maybeSetEnabledText(){try{const e=(0,i.select)(F).getAutoshareEnabled(),t=e?(0,l.__)("This post will be posted to X/Twitter","autoshare-for-twitter"):(0,l.__)("This post will not be posted to X/Twitter","autoshare-for-twitter");t!==this.state.enabledText&&this.setState({enabled:e,enabledText:t})}catch(e){}}render(){const{enabled:e,enabledText:t}=this.state,r=e?U:W,s=(0,R.jsx)(n.Icon,{className:"autoshare-for-twitter-icon components-panel__icon",icon:r,size:24});return(0,R.jsx)(o.PluginPrePublishPanel,{title:t,icon:s,className:"autoshare-for-twitter-pre-publish-panel",children:(0,R.jsx)(Ae,{})})}}class Ee extends s.Component{constructor(e){super(e),this.state={enabledText:""},this.maybeSetEnabledText=this.maybeSetEnabledText.bind(this)}componentDidMount(){(0,i.dispatch)(F).setLoaded(),(0,i.subscribe)(this.maybeSetEnabledText)}maybeSetEnabledText(){try{const e=(0,i.select)(F).getAutoshareEnabled(),t=e?(0,l.__)("Autopost to X/Twitter enabled","autoshare-for-twitter"):(0,l.__)("Autopost to X/Twitter disabled","autoshare-for-twitter");t!==this.state.enabledText&&this.setState({enabledText:t,enabled:e})}catch(e){}}render(){if("publish"===(0,i.select)("core/editor").getCurrentPostAttribute("status")){const e=(0,i.select)("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status");let t="";return e&&e.message&&e.message.length&&(t=e.message[e.message.length-1].status||""),(0,R.jsx)(o.PluginDocumentSettingPanel,{title:(0,l.__)("Autopost to X/Twitter","autoshare-for-twitter"),icon:H(t),className:"autoshare-for-twitter-editor-panel",children:(0,R.jsx)(Se,{})})}const{enabled:e,enabledText:t}=this.state,r=e?U:W,s=(0,R.jsx)(n.Icon,{className:"autoshare-for-twitter-icon components-panel__icon",icon:r,size:24});return(0,R.jsx)(o.PluginDocumentSettingPanel,{title:t,icon:s,className:"autoshare-for-twitter-editor-panel",children:(0,R.jsx)(Ae,{})})}}(0,a.registerPlugin)("autoshare-for-twitter-editor-panel",{render:Ee}),(0,a.registerPlugin)("autoshare-for-twitter-pre-publish-panel",{render:ye}),(0,a.registerPlugin)("autoshare-for-twitter-post-publish-panel",{render:()=>(0,R.jsx)(o.PluginPostPublishPanel,{className:"my-plugin-post-status-info",children:(0,R.jsx)(Se,{})})})})();3 (0,l.__)("%d - Getting Long!","autoshare-for-twitter"),e),overrideLengthClass:"near-limit"}:{tweetLength:`${e}`,overrideLengthClass:""}})(),d=(0,i.useSelect)(e=>e("core/editor").isPublishingPost()),h=(0,i.useSelect)(e=>"publish"===e("core/editor").getEditedPostAttribute("status")),w=(0,s.useRef)(d);(0,s.useEffect)(()=>{w.current&&!d&&h&&a(""),w.current=d},[d,h]);const g=()=>(0,X.jsx)(n.Tooltip,{text:(0,l.__)("Count is inclusive of the post permalink which will be included in the final tweet.","autoshare-for-twitter"),children:(0,X.jsx)("div",{children:c})});return(0,X.jsx)(n.TextareaControl,{value:o,onChange:e=>{a(e)},className:"autoshare-for-twitter-tweet-text",maxLength:r,label:(0,X.jsxs)("span",{style:{marginTop:"0.5rem",display:"block"},className:"autoshare-for-twitter-prepublish__message-label",children:[(0,X.jsxs)("span",{children:[(0,l.__)("Custom message:","autoshare-for-twitter")," "]}),(0,X.jsx)("span",{id:"autoshare-for-twitter-counter-wrap",className:`alignright ${u}`,children:(0,X.jsx)(g,{})})]})})}const we=window.wp.date,{connectedAccounts:ge,connectAccountUrl:me}=adminAutoshareForTwitter,pe=(0,we.getSettings)();function _e(){const e=ge?Object.values(ge):[],[t]=e,[r]=ae();return(0,X.jsxs)("div",{className:"autoshare-for-twitter-accounts-wrapper",children:[e.map(e=>(0,X.jsx)(fe,{...e},e.id)),t&&r?.length>0&&(0,X.jsx)(Te,{...t}),r?.length>0&&(0,X.jsx)("div",{className:"autoshare-for-twitter-rate-monitor__disclaimer",children:(0,X.jsxs)("p",{children:[(0,X.jsx)("strong",{children:(0,l.__)("Note:","autoshare-for-twitter")})," ",(0,l.__)("The displayed API rate limits are updated only when a tweet is posted. Since there is no dedicated endpoint for real-time usage data, the information provided may not fully reflect the current API usage, especially if other tweets are made through the same app.","autoshare-for-twitter")]})}),(0,X.jsx)("span",{className:"connect-account-link",children:(0,X.jsx)(n.ExternalLink,{href:me,children:(0,l.__)("Connect an account","autoshare-for-twitter")})})]})}function fe(e){const[t,r]=ae(),{id:s,name:o,username:a,profile_image_url:i}=e;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)("div",{className:"twitter-account-wrapper",children:[(0,X.jsx)("img",{src:i,alt:o,className:"twitter-account-profile-image"}),(0,X.jsxs)("span",{className:"account-details",children:[(0,X.jsxs)("strong",{children:["@",a]}),(0,X.jsx)("br",{}),o]}),(0,X.jsx)(n.ToggleControl,{checked:t&&t.includes(s),onChange:e=>{r(e?[...t,s]:t.filter(e=>e!==s))},className:"autoshare-for-twitter-account-toggle"})]}),t&&t.includes(s)&&(0,X.jsx)(xe,{...e})]})}function xe({rate_limits:e}){return!e||!e.user_limit_24hour_limit||e?.user_limit_24hour_reset<Math.floor(Date.now()/1e3)?(0,X.jsx)("p",{children:(0,l.__)("No X/Twitter rate limit available yet. Make a post to X/Twitter first.","autoshare-for-twitter")}):(0,X.jsx)("div",{className:"autoshare-for-twitter-rate-monitor__user",children:(0,X.jsx)(be,{title:(0,l.__)("User 24-Hour Limit:","autoshare-for-twitter"),remaining:e?.user_limit_24hour_remaining,limit:e?.user_limit_24hour_limit,reset:e?.user_limit_24hour_reset,tooltip:(0,l.__)("The maximum number of requests a single user can make across all API endpoints within a 24-hour period.","autoshare-for-twitter")})})}function Te({rate_limits:e}){return!e||!e.app_limit_24hour_limit||e?.app_limit_24hour_reset<Math.floor(Date.now()/1e3)?null:(0,X.jsx)("div",{className:"autoshare-for-twitter-rate-monitor__app",children:(0,X.jsx)(be,{title:(0,l.__)("App 24-Hour Limit:","autoshare-for-twitter"),remaining:e?.app_limit_24hour_remaining,limit:e?.app_limit_24hour_limit,reset:e?.app_limit_24hour_reset,tooltip:(0,l.__)("The total number of API calls your app can make across all users within a 24-hour period.","autoshare-for-twitter")})})}function be({title:e,remaining:t,limit:r,reset:s,tooltip:o}){let a=(0,l.__)("N/A","autoshare-for-twitter");return s&&pe?.formats?.datetime&&(a=(0,we.dateI18n)(pe.formats.datetime,1e3*s),a=(0,l.sprintf)("Resets on %1$s",a)),(0,X.jsxs)("div",{className:"autoshare-for-twitter-rate-monitor__rate",children:[(0,X.jsxs)("p",{className:"autoshare-for-twitter-rate-monitor__rate-limit",children:[(0,X.jsx)(n.Tooltip,{text:o,children:(0,X.jsx)("strong",{children:e})})," ",(0,l.sprintf)(/* translators: %1$s: Remaining, %2$s: Limit */ /* translators: %1$s: Remaining, %2$s: Limit */ 4 (0,l.__)("%1$s of %2$s requests remaining","autoshare-for-twitter"),null!=t?t:(0,l.__)("N/A","autoshare-for-twitter"),null!=r?r:(0,l.__)("N/A","autoshare-for-twitter"))]}),(0,X.jsx)("p",{className:"autoshare-for-twitter-rate-monitor__rate-reset",children:a})]})}const je=({errorMessage:e})=>(0,X.jsxs)("span",{children:[e," ",e?.includes("When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer App that is attached to a Project. You can create a project via the developer portal.")&&(0,X.jsx)(n.ExternalLink,{href:"https://developer.twitter.com/en/docs/twitter-api/migrate/ready-to-migrate",children:(0,l.__)("Learn more here.","autoshare-for-twitter")})]});function ve({messages:e}){return e&&e.message.length?(0,X.jsxs)("div",{className:"autoshare-for-twitter-post-status",children:[e.message.map((e,t)=>{const r=H(e.status);return(0,X.jsxs)("div",{className:"autoshare-for-twitter-log",children:[r,(0,X.jsxs)("span",{children:[e.url?(0,X.jsx)(n.ExternalLink,{href:e.url,children:e.message}):(0,X.jsx)(je,{errorMessage:e.message}),!!e.handle&&(0,X.jsx)("strong",{children:" - @"+e.handle})]})]},t)}),(0,X.jsx)(n.CardDivider,{})]}):null}function Ae(){const[e,t]=se(),[r,s]=function(){const{overriding:e}=(0,i.useSelect)(e=>({overriding:e(F).getOverriding()})),{setOverriding:t}=(0,i.useDispatch)(F);return[e,t]}(),[o,a]=oe(),[c]=ie(),u=ne(),d=(0,i.select)("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status");return le(),(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ve,{messages:d}),(0,X.jsx)(n.ToggleControl,{label:e?(0,l.__)("Post to X/Twitter when published","autoshare-for-twitter"):(0,l.__)("Don't post to X/Twitter","autoshare-for-twitter"),checked:e,onChange:e=>{t(e)},className:"autoshare-for-twitter-toggle-control"}),e&&u&&(0,X.jsx)(n.ToggleControl,{label:(0,l.__)("Use featured image in Post to X/Twitter","autoshare-for-twitter"),checked:o,onChange:()=>{a(!o)},className:"autoshare-for-twitter-toggle-control"}),e&&(0,X.jsx)(_e,{}),e&&(0,X.jsxs)("div",{className:"autoshare-for-twitter-prepublish__override-row",children:[r&&(0,X.jsx)(he,{}),(0,X.jsx)(n.Button,{isLink:!0,onClick:()=>{s(!r)},children:r?(0,l.__)("Hide","autoshare-for-twitter"):(0,l.__)("Edit","autoshare-for-twitter")})]}),(0,X.jsx)("div",{children:c})]})}const Se=(0,window.wp.compose.compose)((0,i.withSelect)(e=>({statusMessage:e("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status")})))(function(){const e=ne(),[t,r]=oe(),[,o]=re(),[a,c]=(0,s.useState)(!1),[u,d]=(0,s.useState)(!1),{messages:h}=(0,i.useSelect)(e=>({messages:e("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status")})),[w,g]=(0,s.useState)(h);if(le(),w&&!w.message.length)return null;const m=(0,X.jsx)(n.Icon,{icon:(0,X.jsx)("svg",{viewBox:"0 0 28 28",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28","aria-hidden":"true",focusable:"false",children:(0,X.jsx)("path",{d:"M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z"})})}),p=(0,X.jsx)(n.Icon,{icon:(0,X.jsx)("svg",{viewBox:"0 0 28 28",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28","aria-hidden":"true",focusable:"false",children:(0,X.jsx)("path",{d:"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"})})});return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ve,{messages:w}),(0,X.jsx)(n.Button,{className:"autoshare-for-twitter-tweet-now",variant:"link",text:(0,l.__)("Post to X/Twitter now","autoshare-for-twitter"),onClick:()=>d(!u),iconPosition:"right",icon:u?m:p}),u&&(0,X.jsxs)(X.Fragment,{children:[e&&(0,X.jsx)(n.ToggleControl,{label:(0,l.__)("Use featured image in Post to X/Twitter","autoshare-for-twitter"),checked:t,onChange:()=>{r(!t)},className:"autoshare-for-twitter-toggle-control"}),(0,X.jsx)(_e,{}),(0,X.jsx)(he,{}),(0,X.jsx)(n.Button,{variant:"primary",className:"autoshare-for-twitter-re-tweet",text:a?(0,l.__)("Posting to X/Twitter…","autoshare-for-twitter"):(0,l.__)("Post to X/Twitter","autoshare-for-twitter"),onClick:()=>{(async()=>{c(!0);const e=await(0,i.select)("core/editor").getCurrentPostId(),t=new FormData;t.append("action",adminAutoshareForTwitter.retweetAction),t.append("nonce",adminAutoshareForTwitter.nonce),t.append("post_id",e);const r=await fetch(ajaxurl,{method:"POST",body:t}),{data:s}=await r.json();s.is_retweeted&&o(""),g(s),c(!1)})()}})]})]})});(0,i.registerStore)(F,{reducer:function(e=b,t){switch(t.type){case c:return{...e,autoshareEnabled:t.autoshareEnabled};case u:return{...e,errorMessage:t.errorMessage};case d:return{...e,loaded:!0};case h:return{...e,overriding:t.overriding};case w:return{...e,saving:t.saving};case g:return{...e,tweetText:t.tweetText};case m:return{...e,allowTweetImage:t.allowTweetImage};case p:return{...e,tweetAccounts:t.tweetAccounts}}},actions:t,selectors:r});class ye extends s.Component{constructor(e){super(e),this.state={enabledText:""},this.maybeSetEnabledText=this.maybeSetEnabledText.bind(this)}componentDidMount(){(0,i.dispatch)(F).setLoaded(),(0,i.subscribe)(this.maybeSetEnabledText)}maybeSetEnabledText(){try{const e=(0,i.select)(F).getAutoshareEnabled(),t=e?(0,l.__)("This post will be posted to X/Twitter","autoshare-for-twitter"):(0,l.__)("This post will not be posted to X/Twitter","autoshare-for-twitter");t!==this.state.enabledText&&this.setState({enabled:e,enabledText:t})}catch(e){}}render(){const{enabled:e,enabledText:t}=this.state,r=e?U:W,s=(0,X.jsx)(n.Icon,{className:"autoshare-for-twitter-icon components-panel__icon",icon:r,size:24});return(0,X.jsx)(a.PluginPrePublishPanel,{title:t,icon:s,className:"autoshare-for-twitter-pre-publish-panel",children:(0,X.jsx)(Ae,{})})}}class Ee extends s.Component{constructor(e){super(e),this.state={enabledText:""},this.maybeSetEnabledText=this.maybeSetEnabledText.bind(this)}componentDidMount(){(0,i.dispatch)(F).setLoaded(),(0,i.subscribe)(this.maybeSetEnabledText)}maybeSetEnabledText(){try{const e=(0,i.select)(F).getAutoshareEnabled(),t=e?(0,l.__)("Autopost to X/Twitter enabled","autoshare-for-twitter"):(0,l.__)("Autopost to X/Twitter disabled","autoshare-for-twitter");t!==this.state.enabledText&&this.setState({enabledText:t,enabled:e})}catch(e){}}render(){if("publish"===(0,i.select)("core/editor").getCurrentPostAttribute("status")){const e=(0,i.select)("core/editor").getCurrentPostAttribute("autoshare_for_twitter_status");let t="";return e&&e.message&&e.message.length&&(t=e.message[e.message.length-1].status||""),(0,X.jsx)(a.PluginDocumentSettingPanel,{title:(0,l.__)("Autopost to X/Twitter","autoshare-for-twitter"),icon:H(t),className:"autoshare-for-twitter-editor-panel",children:(0,X.jsx)(Se,{})})}const{enabled:e,enabledText:t}=this.state,r=e?U:W,s=(0,X.jsx)(n.Icon,{className:"autoshare-for-twitter-icon components-panel__icon",icon:r,size:24});return(0,X.jsx)(a.PluginDocumentSettingPanel,{title:t,icon:s,className:"autoshare-for-twitter-editor-panel",children:(0,X.jsx)(Ae,{})})}}(0,o.registerPlugin)("autoshare-for-twitter-editor-panel",{render:Ee}),(0,o.registerPlugin)("autoshare-for-twitter-pre-publish-panel",{render:ye}),(0,o.registerPlugin)("autoshare-for-twitter-post-publish-panel",{render:()=>(0,X.jsx)(a.PluginPostPublishPanel,{className:"my-plugin-post-status-info",children:(0,X.jsx)(Se,{})})})})(); -
autoshare-for-twitter/trunk/includes/admin/post-transition.php
r2956880 r3449105 102 102 $post = get_post( $post_id ); 103 103 104 // Ensure we have a valid $post object. 105 if ( ! $post ) { 106 return false; 107 } 108 109 // Ensure the user has edit permissions on the post. 110 if ( ! current_user_can( 'edit_post', $post->ID ) ) { 111 return false; 112 } 113 104 114 /* 105 115 * Don't bother enqueuing assets if the post type hasn't opted into autosharing … … 111 121 // Don't publish tweets from staging/testing sites. 112 122 if ( ! AST_Staging::is_production_site() ) { 113 return false;114 }115 116 // Ensure we have a $post object.117 if ( ! $post ) {118 123 return false; 119 124 } … … 190 195 */ 191 196 function retweet() { 197 // Ensure the nonce is valid. 192 198 if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'wp_rest' ) ) { 193 199 wp_send_json_error( __( 'Nonce verification failed.', 'autoshare-for-twitter' ) ); 194 200 } 195 201 196 $post_id = isset( $_POST['post_id'] ) ? absint( $_POST['post_id'] ) : 0; 202 // Ensure we have a post ID. 203 $post_id = isset( $_POST['post_id'] ) ? absint( $_POST['post_id'] ) : 0; 204 205 if ( 0 === $post_id ) { 206 wp_send_json_error( __( 'Invalid post ID.', 'autoshare-for-twitter' ) ); 207 } 208 209 // Ensure the user has edit permissions on the post. 210 if ( ! current_user_can( 'edit_post', $post_id ) ) { 211 wp_send_json_error( __( 'You do not have permission to retweet this post.', 'autoshare-for-twitter' ) ); 212 } 213 214 // Publish the tweet. 197 215 $is_retweeted = publish_tweet( $post_id, true ); 198 216 -
autoshare-for-twitter/trunk/readme.txt
r3432284 r3449105 2 2 Contributors: 10up, johnwatkins0, adamsilverstein, scottlee, dinhtungdu, jeffpaul, dharm1025 3 3 Tags: twitter, tweet, share, social media, posse 4 Requires at least: 6. 64 Requires at least: 6.8 5 5 Tested up to: 6.9 6 Stable tag: 2.3. 16 Stable tag: 2.3.2 7 7 License: GPL-2.0-or-later 8 8 License URI: https://spdx.org/licenses/GPL-2.0-or-later.html … … 102 102 To avoid encountering this error in the future and to have higher usage limits, we recommend considering a subscription to either the Basic or Pro access level. These access levels provide increased quotas and additional benefits to accommodate your needs. For more information on X/Twitter API access levels, you can visit this link: https://developer.x.com/en/products/x-api. 103 103 104 = Where do I report security bugs found in this plugin? = 105 106 Please report security bugs found in the source code of the Autoshare for Twitter plugin through the [Patchstack Vulnerability Disclosure Program](https://patchstack.com/database/vdp/9e5fba6a-26c2-4dd7-a2ae-b8628c65835e). The Patchstack team will assist you with verification, CVE assignment, and notify the developers of this plugin. 107 104 108 == Screenshots == 105 109 … … 110 114 111 115 == Changelog == 116 117 = 2.3.2 - 2026-01-29 = 118 **Note that this version bumps the WordPress minimum supported version from 6.6 to 6.8.** 119 120 * **Security:** Fix access control issue for retweeting (props [@nblirwn](https://github.com/nblirwn), [@dkotter](https://github.com/dkotter), [@peterwilsoncc](https://github.com/peterwilsoncc), [@jeffpaul](https://github.com/jeffpaul) via [GHSA-9j39-fp7c-5453](https://github.com/10up/autoshare-for-twitter/security/advisories/GHSA-9j39-fp7c-5453)). 121 * **Added:** Support for the WordPress.org plugin preview (props [@dkotter](https://github.com/dkotter), [@iamdharmesh](https://github.com/iamdharmesh), [@jeffpaul](https://github.com/jeffpaul) via [#297](https://github.com/10up/autoshare-for-twitter/pull/297)). 122 * **Changed:** Bumped WordPress "tested up to" version 6.9 (props [@peterwilsoncc](https://github.com/peterwilsoncc), [@dkotter](https://github.com/dkotter) via [#390](https://github.com/10up/autoshare-for-twitter/pull/390)). 123 * **Changed:** Bumped WordPress minimum supported version from 6.6 to 6.8 (props [@jeffpaul](https://github.com/jeffpaul) via [#397](https://github.com/10up/autoshare-for-twitter/pull/397)). 124 * **Changed:** Updated npm dependencies via `npm audit fix` (props [@peterwilsoncc](https://github.com/peterwilsoncc), [@dkotter](https://github.com/dkotter) via [#392](https://github.com/10up/autoshare-for-twitter/pull/392)). 125 * **Fixed:** Clear tweet text field only after post publish completes in block editor (props [@chandrapatel](https://github.com/chandrapatel), [@iamdharmesh](https://github.com/iamdharmesh) via [#378](https://github.com/10up/autoshare-for-twitter/pull/378)). 112 126 113 127 = 2.3.1 - 2025-07-14 = … … 136 150 * **Security:** Bump `ws` from 7.5.10 to 8.18.0, `serve-static` from 1.15.0 to 1.16.2 and `express` from 4.19.2 to 4.21.0 (props [@dependabot](https://github.com/apps/dependabot), [@Sidsector9](https://github.com/Sidsector9) via [#343](https://github.com/10up/autoshare-for-twitter/pull/343)). 137 151 138 = 2.2.1 - 2024-07-08 =139 * **Changed:** Bump WordPress "tested up to" version 6.5 (props [@iamdharmesh](https://github.com/iamdharmesh), [@dkotter](https://github.com/dkotter), [@sudip-md](https://github.com/sudip-md), [@jeffpaul](https://github.com/jeffpaul) via [#319](https://github.com/10up/autoshare-for-twitter/pull/319)).140 * **Fixed:** Ampersands no longer converted to HTML entities when adding query parameters to the post URL with the `autoshare_for_twitter_post_url` filter (props [@justinmaurerdotdev](https://github.com/justinmaurerdotdev), [@iamdharmesh](https://github.com/iamdharmesh) via [#324](https://github.com/10up/autoshare-for-twitter/pull/324)).141 * **Security:** Bump `express` from 4.18.2 to 4.19.2 (props [@dependabot](https://github.com/apps/dependabot), [@iamdharmesh](https://github.com/iamdharmesh) via [#321](https://github.com/10up/autoshare-for-twitter/pull/321)).142 * **Security:** Bump `follow-redirects` from 1.15.5 to 1.15.6 (props [@dependabot](https://github.com/apps/dependabot), [@iamdharmesh](https://github.com/iamdharmesh) via [#321](https://github.com/10up/autoshare-for-twitter/pull/321)).143 * **Security:** Bump `ip` from 1.1.8 to 1.1.9 (props [@dependabot](https://github.com/apps/dependabot), [@iamdharmesh](https://github.com/iamdharmesh) via [#321](https://github.com/10up/autoshare-for-twitter/pull/321)).144 * **Security:** Bump `webpack-dev-middleware` from 5.3.3 to 5.3.4 (props [@dependabot](https://github.com/apps/dependabot), [@iamdharmesh](https://github.com/iamdharmesh) via [#321](https://github.com/10up/autoshare-for-twitter/pull/321)).145 146 152 Further changelog entries can be found in the [CHANGELOG.md](https://github.com/10up/autoshare-for-twitter/blob/trunk/CHANGELOG.md) file. 147 153 148 154 == Upgrade Notice == 155 156 = 2.3.2 = 157 Security release: this patches an access control issue with retweets. Please upgrade promptly. This release bumps the WordPress minimum from 6.6 to 6.8. 149 158 150 159 = 2.3.1 = -
autoshare-for-twitter/trunk/vendor/autoload.php
r3327663 r3449105 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit10upAutoshareForTwitterV23 1::getLoader();22 return ComposerAutoloaderInit10upAutoshareForTwitterV232::getLoader(); -
autoshare-for-twitter/trunk/vendor/composer/autoload_real.php
r3327663 r3449105 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit10upAutoshareForTwitterV23 15 class ComposerAutoloaderInit10upAutoshareForTwitterV232 6 6 { 7 7 private static $loader; … … 23 23 } 24 24 25 spl_autoload_register(array('ComposerAutoloaderInit10upAutoshareForTwitterV23 1', 'loadClassLoader'), true, true);25 spl_autoload_register(array('ComposerAutoloaderInit10upAutoshareForTwitterV232', 'loadClassLoader'), true, true); 26 26 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 27 spl_autoload_unregister(array('ComposerAutoloaderInit10upAutoshareForTwitterV23 1', 'loadClassLoader'));27 spl_autoload_unregister(array('ComposerAutoloaderInit10upAutoshareForTwitterV232', 'loadClassLoader')); 28 28 29 29 require __DIR__ . '/autoload_static.php'; 30 call_user_func(\Composer\Autoload\ComposerStaticInit10upAutoshareForTwitterV23 1::getInitializer($loader));30 call_user_func(\Composer\Autoload\ComposerStaticInit10upAutoshareForTwitterV232::getInitializer($loader)); 31 31 32 32 $loader->register(true); -
autoshare-for-twitter/trunk/vendor/composer/autoload_static.php
r3327663 r3449105 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit10upAutoshareForTwitterV23 17 class ComposerStaticInit10upAutoshareForTwitterV232 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( 10 'C' => 10 'C' => 11 11 array ( 12 12 'Composer\\CaBundle\\' => 18, 13 13 ), 14 'A' => 14 'A' => 15 15 array ( 16 16 'Abraham\\TwitterOAuth\\' => 21, … … 19 19 20 20 public static $prefixDirsPsr4 = array ( 21 'Composer\\CaBundle\\' => 21 'Composer\\CaBundle\\' => 22 22 array ( 23 23 0 => __DIR__ . '/..' . '/composer/ca-bundle/src', 24 24 ), 25 'Abraham\\TwitterOAuth\\' => 25 'Abraham\\TwitterOAuth\\' => 26 26 array ( 27 27 0 => __DIR__ . '/..' . '/abraham/twitteroauth/src', … … 48 48 { 49 49 return \Closure::bind(function () use ($loader) { 50 $loader->prefixLengthsPsr4 = ComposerStaticInit10upAutoshareForTwitterV23 1::$prefixLengthsPsr4;51 $loader->prefixDirsPsr4 = ComposerStaticInit10upAutoshareForTwitterV23 1::$prefixDirsPsr4;52 $loader->classMap = ComposerStaticInit10upAutoshareForTwitterV23 1::$classMap;50 $loader->prefixLengthsPsr4 = ComposerStaticInit10upAutoshareForTwitterV232::$prefixLengthsPsr4; 51 $loader->prefixDirsPsr4 = ComposerStaticInit10upAutoshareForTwitterV232::$prefixDirsPsr4; 52 $loader->classMap = ComposerStaticInit10upAutoshareForTwitterV232::$classMap; 53 53 54 54 }, null, ClassLoader::class); -
autoshare-for-twitter/trunk/vendor/composer/installed.php
r3327663 r3449105 2 2 'root' => array( 3 3 'name' => '10up/autoshare-for-twitter', 4 'pretty_version' => '2.3. 1',5 'version' => '2.3. 1.0',6 'reference' => ' f0ac633ecc04caa191eeccadfe1edb40c4151344',4 'pretty_version' => '2.3.2', 5 'version' => '2.3.2.0', 6 'reference' => '2bc26a29159a83a1ce4388a71ef21b2369f22382', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 '10up/autoshare-for-twitter' => array( 14 'pretty_version' => '2.3. 1',15 'version' => '2.3. 1.0',16 'reference' => ' f0ac633ecc04caa191eeccadfe1edb40c4151344',14 'pretty_version' => '2.3.2', 15 'version' => '2.3.2.0', 16 'reference' => '2bc26a29159a83a1ce4388a71ef21b2369f22382', 17 17 'type' => 'wordpress-plugin', 18 18 'install_path' => __DIR__ . '/../../',
Note: See TracChangeset
for help on using the changeset viewer.