mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-29 07:02:26 -05:00
[feature] Add opt-in RSS feed for account's latest Public posts (#897)
* start adding rss functionality * add gorilla/feeds dependency * first bash at building rss feed still needs work, this is an interim commit * tidy up a bit * add publicOnly option to GetAccountLastPosted * implement rss endpoint * fix test * add initial user docs for rss * update rss logo * docs update * add rssFeed to frontend * feed -> feed.rss * enableRSS * increase rss logo size a lil bit * add rss toggle * move emojify to text package * fiddle with rss feed formatting * add Text field to test statuses * move status to rss item to typeconverter * update bun schema for enablerss * simplify 304 checking * assume account not rss * update tests * update swagger docs * allow more characters in title, trim nicer * update last posted to be more consistent
This commit is contained in:
parent
aa07750bdb
commit
80663061d8
58 changed files with 2282 additions and 211 deletions
18
web/assets/rss.svg
Normal file
18
web/assets/rss.svg
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="128px" height="128px" id="RSSicon" viewBox="0 0 256 256">
|
||||
<defs>
|
||||
<linearGradient x1="0.085" y1="0.085" x2="0.915" y2="0.915" id="RSSg">
|
||||
<stop offset="0.0" stop-color="#E3702D"/><stop offset="0.1071" stop-color="#EA7D31"/>
|
||||
<stop offset="0.3503" stop-color="#F69537"/><stop offset="0.5" stop-color="#FB9E3A"/>
|
||||
<stop offset="0.7016" stop-color="#EA7C31"/><stop offset="0.8866" stop-color="#DE642B"/>
|
||||
<stop offset="1.0" stop-color="#D95B29"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="256" height="256" rx="55" ry="55" x="0" y="0" fill="#CC5D15"/>
|
||||
<rect width="246" height="246" rx="50" ry="50" x="5" y="5" fill="#F49C52"/>
|
||||
<rect width="236" height="236" rx="47" ry="47" x="10" y="10" fill="url(#RSSg)"/>
|
||||
<circle cx="68" cy="189" r="24" fill="#FFF"/>
|
||||
<path d="M160 213h-34a82 82 0 0 0 -82 -82v-34a116 116 0 0 1 116 116z" fill="#FFF"/>
|
||||
<path d="M184 213A140 140 0 0 0 44 73 V 38a175 175 0 0 1 175 175z" fill="#FFF"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -220,5 +220,15 @@ main {
|
|||
}
|
||||
|
||||
#recent {
|
||||
margin-left: 1rem;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin: 1rem;
|
||||
.rsslogo {
|
||||
width: 1.45em;
|
||||
height: 1.45em;
|
||||
object-fit: contain;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ module.exports = function ({ apiCall, getChanges }) {
|
|||
},
|
||||
|
||||
updateProfile: function updateProfile() {
|
||||
const formKeys = ["display_name", "locked", "source", "custom_css", "source.note"];
|
||||
const formKeys = ["display_name", "locked", "source", "custom_css", "source.note", "enable_rss"];
|
||||
const renamedKeys = {
|
||||
"source.note": "note"
|
||||
};
|
||||
|
|
|
|||
|
|
@ -96,7 +96,11 @@ module.exports = function UserProfile() {
|
|||
/>
|
||||
<Checkbox
|
||||
id="locked"
|
||||
name="Manually approve follow requests? "
|
||||
name="Manually approve follow requests"
|
||||
/>
|
||||
<Checkbox
|
||||
id="enable_rss"
|
||||
name="Enable RSS feed of Public posts"
|
||||
/>
|
||||
{ !allowCustomCSS ? null :
|
||||
<TextArea
|
||||
|
|
|
|||
|
|
@ -27,7 +27,12 @@
|
|||
<div class="entry">Posted <b>{{.account.StatusesCount}}</b></div>
|
||||
</div>
|
||||
</div>
|
||||
<h2 id="recent">Latest public toots</h2>
|
||||
<h2 id="recent">
|
||||
<span>Latest public toots</span>
|
||||
{{ if .rssFeed }}
|
||||
<a href="{{ .rssFeed }}"><img class="rsslogo" src="/assets/rss.svg" alt="The orange RSS logo."/></a>
|
||||
{{ end }}
|
||||
</h2>
|
||||
{{ if not .statuses }}
|
||||
<div data-nosnippet class="nothinghere">Nothing here!</div>
|
||||
{{ else }}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue