diff --git a/src/components/compose.jsx b/src/components/compose.jsx
index 2a4dca8fee..58cd61cb77 100644
--- a/src/components/compose.jsx
+++ b/src/components/compose.jsx
@@ -1126,6 +1126,16 @@ function Compose({
// params.inReplyToId = replyToStatus?.id || undefined;
params.in_reply_to_id = replyToStatus?.id || undefined;
}
+ if(supports('@gotosocial/local-posting')) {
+ if(params.visibility === "local-public") {
+ params.visibility = "public";
+ params.local_only = true;
+ }
+ if(params.visibility === "local-unlisted") {
+ params.visibility = "unlisted";
+ params.local_only = true;
+ }
+ }
params = removeNullUndefined(params);
console.log('POST', params);
@@ -1237,9 +1247,19 @@ function Compose({
Local
)}
+ {(supports('@gotosocial/local-posting')) && (
+
+ )}
+ {(supports('@gotosocial/local-posting')) && (
+
+ )}
diff --git a/src/data/features.json b/src/data/features.json
index 826fd98217..703d3de642 100644
--- a/src/data/features.json
+++ b/src/data/features.json
@@ -2,6 +2,7 @@
"@mastodon/edit-media-attributes": ">=4.1",
"@mastodon/list-exclusive": ">=4.2",
"@gotosocial/list-exclusive": ">=0.17",
+ "@gotosocial/local-posting": ">=0.17",
"@mastodon/filtered-notifications": "~4.3 || >=4.3",
"@mastodon/fetch-multiple-statuses": "~4.3 || >=4.3",
"@mastodon/trending-link-posts": "~4.3 || >=4.3",
diff --git a/src/locales/de-DE.po b/src/locales/de-DE.po
index 68cbc1b8d8..399bbec2fe 100644
--- a/src/locales/de-DE.po
+++ b/src/locales/de-DE.po
@@ -676,12 +676,20 @@ msgstr "Öffentlich"
msgid "Local"
msgstr "Lokal"
+#: src/components/compose.jsx:1252
+msgid "Local Instance Public"
+msgstr "Lokal öffentlich"
+
#: src/components/compose.jsx:1241
#: src/components/status.jsx:95
#: src/pages/settings.jsx:309
msgid "Unlisted"
msgstr "Nicht gelistet"
+#: src/components/compose.jsx:1260
+msgid "Local Instance Unlisted"
+msgstr "Lokal nicht gelistet"
+
#: src/components/compose.jsx:1244
#: src/components/status.jsx:96
#: src/pages/settings.jsx:312
diff --git a/src/locales/en.po b/src/locales/en.po
index 5beaabf4e9..ca621fad87 100644
--- a/src/locales/en.po
+++ b/src/locales/en.po
@@ -108,7 +108,7 @@ msgstr ""
#: src/components/account-info.jsx:429
#: src/components/account-info.jsx:1120
-#: src/components/compose.jsx:2624
+#: src/components/compose.jsx:2644
#: src/components/media-alt-modal.jsx:46
#: src/components/media-modal.jsx:358
#: src/components/status.jsx:1737
@@ -419,10 +419,10 @@ msgstr ""
#: src/components/account-info.jsx:2098
#: src/components/account-sheet.jsx:38
#: src/components/compose.jsx:859
-#: src/components/compose.jsx:2580
-#: src/components/compose.jsx:3054
-#: src/components/compose.jsx:3263
-#: src/components/compose.jsx:3493
+#: src/components/compose.jsx:2600
+#: src/components/compose.jsx:3074
+#: src/components/compose.jsx:3283
+#: src/components/compose.jsx:3513
#: src/components/drafts.jsx:59
#: src/components/embed-modal.jsx:13
#: src/components/generic-accounts.jsx:143
@@ -588,8 +588,8 @@ msgstr "{0, plural, one {File {1} is not supported.} other {Files {2} are not su
#: src/components/compose.jsx:640
#: src/components/compose.jsx:658
-#: src/components/compose.jsx:1674
-#: src/components/compose.jsx:1760
+#: src/components/compose.jsx:1694
+#: src/components/compose.jsx:1780
msgid "{maxMediaAttachments, plural, one {You can only attach up to 1 file.} other {You can only attach up to # files.}}"
msgstr ""
@@ -648,71 +648,79 @@ msgstr "Some media have no descriptions. Continue?"
msgid "Attachment #{i} failed"
msgstr "Attachment #{i} failed"
-#: src/components/compose.jsx:1180
+#: src/components/compose.jsx:1190
#: src/components/status.jsx:2063
#: src/components/timeline.jsx:989
msgid "Content warning"
msgstr ""
-#: src/components/compose.jsx:1196
+#: src/components/compose.jsx:1206
msgid "Content warning or sensitive media"
msgstr "Content warning or sensitive media"
-#: src/components/compose.jsx:1232
+#: src/components/compose.jsx:1242
#: src/components/status.jsx:93
#: src/pages/settings.jsx:306
msgid "Public"
msgstr ""
-#: src/components/compose.jsx:1237
+#: src/components/compose.jsx:1247
#: src/components/nav-menu.jsx:338
#: src/components/shortcuts-settings.jsx:165
#: src/components/status.jsx:94
msgid "Local"
msgstr ""
-#: src/components/compose.jsx:1241
+#: src/components/compose.jsx:1252
+msgid "Local Instance Public"
+msgstr "Local Instance Public"
+
+#: src/components/compose.jsx:1256
#: src/components/status.jsx:95
#: src/pages/settings.jsx:309
msgid "Unlisted"
msgstr ""
-#: src/components/compose.jsx:1244
+#: src/components/compose.jsx:1260
+msgid "Local Instance Unlisted"
+msgstr "Local Instance Unlisted"
+
+#: src/components/compose.jsx:1264
#: src/components/status.jsx:96
#: src/pages/settings.jsx:312
msgid "Followers only"
msgstr ""
-#: src/components/compose.jsx:1247
+#: src/components/compose.jsx:1267
#: src/components/status.jsx:97
#: src/components/status.jsx:1941
msgid "Private mention"
msgstr ""
-#: src/components/compose.jsx:1256
+#: src/components/compose.jsx:1276
msgid "Post your reply"
msgstr "Post your reply"
-#: src/components/compose.jsx:1258
+#: src/components/compose.jsx:1278
msgid "Edit your post"
msgstr "Edit your post"
-#: src/components/compose.jsx:1259
+#: src/components/compose.jsx:1279
msgid "What are you doing?"
msgstr "What are you doing?"
-#: src/components/compose.jsx:1337
+#: src/components/compose.jsx:1357
msgid "Mark media as sensitive"
msgstr ""
-#: src/components/compose.jsx:1381
-#: src/components/compose.jsx:3112
+#: src/components/compose.jsx:1401
+#: src/components/compose.jsx:3132
#: src/components/shortcuts-settings.jsx:715
#: src/pages/list.jsx:362
msgid "Add"
msgstr ""
-#: src/components/compose.jsx:1555
+#: src/components/compose.jsx:1575
#: src/components/keyboard-shortcuts-help.jsx:152
#: src/components/status.jsx:929
#: src/components/status.jsx:1717
@@ -721,48 +729,48 @@ msgstr ""
msgid "Reply"
msgstr ""
-#: src/components/compose.jsx:1557
+#: src/components/compose.jsx:1577
msgid "Update"
msgstr "Update"
-#: src/components/compose.jsx:1558
+#: src/components/compose.jsx:1578
msgctxt "Submit button in composer"
msgid "Post"
msgstr "Post"
-#: src/components/compose.jsx:1686
+#: src/components/compose.jsx:1706
msgid "Downloading GIF…"
msgstr "Downloading GIF…"
-#: src/components/compose.jsx:1714
+#: src/components/compose.jsx:1734
msgid "Failed to download GIF"
msgstr "Failed to download GIF"
-#: src/components/compose.jsx:1884
-#: src/components/compose.jsx:1961
+#: src/components/compose.jsx:1904
+#: src/components/compose.jsx:1981
#: src/components/nav-menu.jsx:239
msgid "More…"
msgstr ""
-#: src/components/compose.jsx:2393
+#: src/components/compose.jsx:2413
msgid "Uploaded"
msgstr ""
-#: src/components/compose.jsx:2406
+#: src/components/compose.jsx:2426
msgid "Image description"
msgstr "Image description"
-#: src/components/compose.jsx:2407
+#: src/components/compose.jsx:2427
msgid "Video description"
msgstr "Video description"
-#: src/components/compose.jsx:2408
+#: src/components/compose.jsx:2428
msgid "Audio description"
msgstr "Audio description"
#. placeholder {0}: prettyBytes( imageSize, )
#. placeholder {1}: prettyBytes(imageSizeLimit)
-#: src/components/compose.jsx:2444
+#: src/components/compose.jsx:2464
msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {0} to {1} or lower."
msgstr "File size too large. Uploading might encounter issues. Try reduce the file size from {0} to {1} or lower."
@@ -770,13 +778,13 @@ msgstr "File size too large. Uploading might encounter issues. Try reduce the fi
#. placeholder {3}: i18n.number(height)
#. placeholder {4}: i18n.number(newWidth)
#. placeholder {5}: i18n.number( newHeight, )
-#: src/components/compose.jsx:2456
+#: src/components/compose.jsx:2476
msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {2}×{3}px to {4}×{5}px."
msgstr "Dimension too large. Uploading might encounter issues. Try reduce dimension from {2}×{3}px to {4}×{5}px."
#. placeholder {6}: prettyBytes( videoSize, )
#. placeholder {7}: prettyBytes(videoSizeLimit)
-#: src/components/compose.jsx:2464
+#: src/components/compose.jsx:2484
msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {6} to {7} or lower."
msgstr "File size too large. Uploading might encounter issues. Try reduce the file size from {6} to {7} or lower."
@@ -784,149 +792,149 @@ msgstr "File size too large. Uploading might encounter issues. Try reduce the fi
#. placeholder {9}: i18n.number(height)
#. placeholder {10}: i18n.number(newWidth)
#. placeholder {11}: i18n.number( newHeight, )
-#: src/components/compose.jsx:2476
+#: src/components/compose.jsx:2496
msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {8}×{9}px to {10}×{11}px."
msgstr "Dimension too large. Uploading might encounter issues. Try reduce dimension from {8}×{9}px to {10}×{11}px."
-#: src/components/compose.jsx:2484
+#: src/components/compose.jsx:2504
msgid "Frame rate too high. Uploading might encounter issues."
msgstr "Frame rate too high. Uploading might encounter issues."
-#: src/components/compose.jsx:2544
-#: src/components/compose.jsx:2794
+#: src/components/compose.jsx:2564
+#: src/components/compose.jsx:2814
#: src/components/shortcuts-settings.jsx:726
#: src/pages/catchup.jsx:1074
#: src/pages/filters.jsx:412
msgid "Remove"
msgstr ""
-#: src/components/compose.jsx:2561
+#: src/components/compose.jsx:2581
#: src/compose.jsx:84
msgid "Error"
msgstr ""
-#: src/components/compose.jsx:2586
+#: src/components/compose.jsx:2606
msgid "Edit image description"
msgstr "Edit image description"
-#: src/components/compose.jsx:2587
+#: src/components/compose.jsx:2607
msgid "Edit video description"
msgstr "Edit video description"
-#: src/components/compose.jsx:2588
+#: src/components/compose.jsx:2608
msgid "Edit audio description"
msgstr "Edit audio description"
-#: src/components/compose.jsx:2633
-#: src/components/compose.jsx:2682
+#: src/components/compose.jsx:2653
+#: src/components/compose.jsx:2702
msgid "Generating description. Please wait…"
msgstr "Generating description. Please wait…"
#. placeholder {12}: e.message
-#: src/components/compose.jsx:2653
+#: src/components/compose.jsx:2673
msgid "Failed to generate description: {12}"
msgstr "Failed to generate description: {12}"
-#: src/components/compose.jsx:2654
+#: src/components/compose.jsx:2674
msgid "Failed to generate description"
msgstr "Failed to generate description"
-#: src/components/compose.jsx:2666
-#: src/components/compose.jsx:2672
-#: src/components/compose.jsx:2718
+#: src/components/compose.jsx:2686
+#: src/components/compose.jsx:2692
+#: src/components/compose.jsx:2738
msgid "Generate description…"
msgstr ""
#. placeholder {13}: e?.message ? `: ${e.message}` : ''
-#: src/components/compose.jsx:2705
+#: src/components/compose.jsx:2725
msgid "Failed to generate description{13}"
msgstr "Failed to generate description{13}"
#. placeholder {0}: localeCode2Text(lang)
-#: src/components/compose.jsx:2720
+#: src/components/compose.jsx:2740
msgid "({0}) <0>— experimental0>"
msgstr ""
-#: src/components/compose.jsx:2739
+#: src/components/compose.jsx:2759
msgid "Done"
msgstr ""
#. placeholder {0}: i + 1
-#: src/components/compose.jsx:2775
+#: src/components/compose.jsx:2795
msgid "Choice {0}"
msgstr "Choice {0}"
-#: src/components/compose.jsx:2822
+#: src/components/compose.jsx:2842
msgid "Multiple choices"
msgstr ""
-#: src/components/compose.jsx:2825
+#: src/components/compose.jsx:2845
msgid "Duration"
msgstr ""
-#: src/components/compose.jsx:2856
+#: src/components/compose.jsx:2876
msgid "Remove poll"
msgstr ""
-#: src/components/compose.jsx:3071
+#: src/components/compose.jsx:3091
msgid "Search accounts"
msgstr "Search accounts"
-#: src/components/compose.jsx:3125
+#: src/components/compose.jsx:3145
#: src/components/generic-accounts.jsx:228
msgid "Error loading accounts"
msgstr ""
-#: src/components/compose.jsx:3269
+#: src/components/compose.jsx:3289
msgid "Custom emojis"
msgstr ""
-#: src/components/compose.jsx:3289
+#: src/components/compose.jsx:3309
msgid "Search emoji"
msgstr "Search emoji"
-#: src/components/compose.jsx:3320
+#: src/components/compose.jsx:3340
msgid "Error loading custom emojis"
msgstr ""
-#: src/components/compose.jsx:3331
+#: src/components/compose.jsx:3351
msgid "Recently used"
msgstr "Recently used"
-#: src/components/compose.jsx:3332
+#: src/components/compose.jsx:3352
msgid "Others"
msgstr "Others"
#. placeholder {0}: i18n.number(emojis.length - max)
-#: src/components/compose.jsx:3370
+#: src/components/compose.jsx:3390
msgid "{0} more…"
msgstr ""
-#: src/components/compose.jsx:3508
+#: src/components/compose.jsx:3528
msgid "Search GIFs"
msgstr "Search GIFs"
-#: src/components/compose.jsx:3523
+#: src/components/compose.jsx:3543
msgid "Powered by GIPHY"
msgstr "Powered by GIPHY"
-#: src/components/compose.jsx:3531
+#: src/components/compose.jsx:3551
msgid "Type to search GIFs"
msgstr ""
-#: src/components/compose.jsx:3629
+#: src/components/compose.jsx:3649
#: src/components/media-modal.jsx:462
#: src/components/timeline.jsx:893
msgid "Previous"
msgstr ""
-#: src/components/compose.jsx:3647
+#: src/components/compose.jsx:3667
#: src/components/media-modal.jsx:481
#: src/components/timeline.jsx:910
msgid "Next"
msgstr ""
-#: src/components/compose.jsx:3664
+#: src/components/compose.jsx:3684
msgid "Error loading GIFs"
msgstr ""
diff --git a/src/utils/supports.js b/src/utils/supports.js
index e240037a2c..426bb6b058 100644
--- a/src/utils/supports.js
+++ b/src/utils/supports.js
@@ -25,6 +25,7 @@ const platformFeatures = {
'@pixelfed/global-feed': containPixelfed,
'@pleroma/local-visibility-post': containPleroma,
'@akkoma/local-visibility-post': containAkkoma,
+ '@gotosocial/local-posting': containGTS,
};
const supportsCache = {};
@@ -43,7 +44,7 @@ function supports(feature) {
if (supportsCache[key]) return supportsCache[key];
if (platformFeatures[feature]) {
- return (supportsCache[key] = platformFeatures[feature].test(version));
+ return (supportsCache[key] = platformFeatures[feature].test(softwareName));
}
const range = features[feature];
diff --git a/src/utils/visibility-icons-map.js b/src/utils/visibility-icons-map.js
index 835f740654..4576338e5a 100644
--- a/src/utils/visibility-icons-map.js
+++ b/src/utils/visibility-icons-map.js
@@ -4,4 +4,6 @@ export default {
private: 'lock',
direct: 'message',
local: 'building',
+ 'local-public': 'building',
+ 'local-unlisted': 'building'
};