@@ -18,19 +18,57 @@ const fullDate = (dateValue) => {
1818 return `${ monthNames [ newDate . getMonth ( ) ] } ${ newDate . getDate ( ) } , ${ newDate . getFullYear ( ) } ` ;
1919} ;
2020
21+ /**
22+ * Create Twitter search link with page URL
23+ *
24+ * @param {string } content Text for link
25+ * @param {string } pageUrl Page URL
26+ *
27+ * @return {string } Fully formed Twitter search link
28+ */
29+ const tweetSearch = ( content , pageUrl ) => {
30+ // const url = `${siteData.url.replace('https://', '')}/posts/meetups/`;
31+ // ^^ use if less specific searches are desired ^^
32+ const url = `${ siteData . url . replace ( 'https://' , '' ) } ${ pageUrl } ` ;
33+ const search = encodeURIComponent ( url ) ;
34+
35+ return `<a href="https://twitter.com/search?q=${ search } ">${ content } </a>` ;
36+ } ;
37+
38+ /**
39+ * Create Twitter tweet link with page title and URL
40+ *
41+ * @param {string } content Text for link
42+ * @param {string } pageUrl Page URL
43+ * @param {string } pageTitle Page Title
44+ *
45+ * @return {string } Fully formed Twitter share link
46+ */
47+ const tweetPost = ( content , pageUrl , pageTitle ) => {
48+ const settings = {
49+ text : `Meetup: "${ pageTitle } "` ,
50+ url : `${ siteData . url . replace ( 'https://' , '' ) } ${ pageUrl } ` ,
51+ via : siteData . author . twitter ,
52+ } ;
53+ const params = Object . entries ( settings )
54+ . reduce ( ( acc , item ) => `${ acc } ${ item [ 0 ] } =${ encodeURIComponent ( item [ 1 ] ) } &` , '' ) ;
55+
56+ return `<a href="https://twitter.com/intent/tweet?${ params . slice ( 0 , - 1 ) } ">${ content } </a>` ;
57+ } ;
58+
2159/**
2260 * Provide template for meeting details.
2361 *
62+ * @param {string } meetHeader The meeting header (optional)
2463 * @param {string } meetDate The meet date
2564 * @param {string } venue The venue
2665 * @param {string } after The after party gathering place
27- * @param {string } msgHeader The message header (optional)
2866 * @param {string } meetTitle The meet title (optional)
29- * @param {string } meetUrl The meet url (optional)
67+ * @param {string } msgHeader The message header (optional)
3068 *
3169 * @return {string } Completed template
3270 */
33- module . exports = function meetupDetails ( meetDate , venue , after , msgHeader , meetTitle , meetUrl ) {
71+ module . exports = function meetupDetails ( meetHeader , meetDate , venue , after , meetTitle , msgHeader ) {
3472 const header = msgHeader || 'Meetup details' ;
3573
3674 const svgBlock = `<svg display="none">
@@ -39,12 +77,6 @@ module.exports = function meetupDetails(meetDate, venue, after, msgHeader, meetT
3977 <g id="location-sharp"><path d='M256,32C167.67,32,96,96.51,96,176c0,128,160,304,160,304S416,304,416,176C416,96.51,344.33,32,256,32Zm0,224a64,64,0,1,1,64-64A64.07,64.07,0,0,1,256,256Z'/></g>
4078 </svg>` ;
4179
42- const meetHeaderBlock = meetTitle && meetUrl
43- ? `<div class="title is-size-4">
44- <a href="${ meetUrl } ">${ meetTitle } </a>
45- </div>`
46- : '' ;
47-
4880 const venueOrg = venue
4981 ? organizations [ venue ]
5082 : { } ;
@@ -74,7 +106,7 @@ module.exports = function meetupDetails(meetDate, venue, after, msgHeader, meetT
74106 </div>
75107
76108 <div class="message-body">
77- ${ meetHeaderBlock }
109+ ${ meetHeader }
78110
79111 <div>
80112 DATE
@@ -102,11 +134,15 @@ module.exports = function meetupDetails(meetDate, venue, after, msgHeader, meetT
102134 ${ venueLocation }
103135 </div>
104136
137+ <small>
138+ (Check back here or on ${ tweetSearch ( 'Twitter' , this . page . url ) } for updates.)
139+ </small>
140+
105141 ${ afterBlock }
106142
107- <p class="has-margin-top">
108- Check back here or <a href="https://twitter.com/ ${ siteData . author . twitter } ">@ ${ siteData . author . twitter } on Twitter</a> for updates .
109- </p >
143+ <div class="has-margin-top">
144+ Help ${ tweetPost ( 'spread the word on Twitter' , this . page . url , meetTitle ) } .
145+ </div >
110146 </div>
111147</div>` ;
112148} ;
0 commit comments