Merge branch 'main' into web-layout
This commit is contained in:
@@ -1,8 +1,10 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/xml"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
appbsky "github.com/bluesky-social/indigo/api/bsky"
|
appbsky "github.com/bluesky-social/indigo/api/bsky"
|
||||||
"github.com/bluesky-social/indigo/atproto/syntax"
|
"github.com/bluesky-social/indigo/atproto/syntax"
|
||||||
@@ -10,6 +12,12 @@ import (
|
|||||||
"github.com/labstack/echo/v4"
|
"github.com/labstack/echo/v4"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type ItemGUID struct {
|
||||||
|
XMLName xml.Name `xml:"guid"`
|
||||||
|
Value string `xml:",chardata"`
|
||||||
|
IsPerma bool `xml:"isPermaLink,attr"`
|
||||||
|
}
|
||||||
|
|
||||||
// We don't actually populate the title for "posts".
|
// We don't actually populate the title for "posts".
|
||||||
// Some background: https://book.micro.blog/rss-for-microblogs/
|
// Some background: https://book.micro.blog/rss-for-microblogs/
|
||||||
type Item struct {
|
type Item struct {
|
||||||
@@ -17,8 +25,7 @@ type Item struct {
|
|||||||
Link string `xml:"link,omitempty"`
|
Link string `xml:"link,omitempty"`
|
||||||
Description string `xml:"description,omitempty"`
|
Description string `xml:"description,omitempty"`
|
||||||
PubDate string `xml:"pubDate,omitempty"`
|
PubDate string `xml:"pubDate,omitempty"`
|
||||||
Author string `xml:"author,omitempty"`
|
GUID ItemGUID
|
||||||
GUID string `xml:"guid,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type rss struct {
|
type rss struct {
|
||||||
@@ -71,12 +78,19 @@ func (srv *Server) WebProfileRSS(c echo.Context) error {
|
|||||||
if rec.Reply != nil {
|
if rec.Reply != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
pubDate := ""
|
||||||
|
createdAt, err := syntax.ParseDatetimeLenient(rec.CreatedAt)
|
||||||
|
if nil == err {
|
||||||
|
pubDate = createdAt.Time().Format(time.RFC822Z)
|
||||||
|
}
|
||||||
posts = append(posts, Item{
|
posts = append(posts, Item{
|
||||||
Link: fmt.Sprintf("https://bsky.app/profile/%s/post/%s", pv.Handle, aturi.RecordKey().String()),
|
Link: fmt.Sprintf("https://bsky.app/profile/%s/post/%s", pv.Handle, aturi.RecordKey().String()),
|
||||||
Description: rec.Text,
|
Description: rec.Text,
|
||||||
PubDate: rec.CreatedAt,
|
PubDate: pubDate,
|
||||||
Author: "@" + pv.Handle,
|
GUID: ItemGUID{
|
||||||
GUID: aturi.String(),
|
Value: aturi.String(),
|
||||||
|
IsPerma: false,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/** @type {import('@lingui/conf').LinguiConfig} */
|
/** @type {import('@lingui/conf').LinguiConfig} */
|
||||||
module.exports = {
|
module.exports = {
|
||||||
locales: ['en', 'hi', 'ja', 'fr'],
|
locales: ['en', 'hi', 'ja', 'fr', 'de', 'es'],
|
||||||
catalogs: [
|
catalogs: [
|
||||||
{
|
{
|
||||||
path: '<rootDir>/src/locale/locales/{locale}/messages',
|
path: '<rootDir>/src/locale/locales/{locale}/messages',
|
||||||
|
|||||||
@@ -116,6 +116,10 @@ export function sanitizeAppLanguageSetting(appLanguage: string): AppLanguage {
|
|||||||
return AppLanguage.ja
|
return AppLanguage.ja
|
||||||
case 'fr':
|
case 'fr':
|
||||||
return AppLanguage.fr
|
return AppLanguage.fr
|
||||||
|
case 'de':
|
||||||
|
return AppLanguage.de
|
||||||
|
case 'es':
|
||||||
|
return AppLanguage.es
|
||||||
default:
|
default:
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,9 @@ import {messages as messagesEn} from '#/locale/locales/en/messages'
|
|||||||
import {messages as messagesHi} from '#/locale/locales/hi/messages'
|
import {messages as messagesHi} from '#/locale/locales/hi/messages'
|
||||||
import {messages as messagesJa} from '#/locale/locales/ja/messages'
|
import {messages as messagesJa} from '#/locale/locales/ja/messages'
|
||||||
import {messages as messagesFr} from '#/locale/locales/fr/messages'
|
import {messages as messagesFr} from '#/locale/locales/fr/messages'
|
||||||
|
import {messages as messagesDe} from '#/locale/locales/de/messages'
|
||||||
|
import {messages as messagesEs} from '#/locale/locales/de/messages'
|
||||||
|
|
||||||
import {sanitizeAppLanguageSetting} from '#/locale/helpers'
|
import {sanitizeAppLanguageSetting} from '#/locale/helpers'
|
||||||
import {AppLanguage} from '#/locale/languages'
|
import {AppLanguage} from '#/locale/languages'
|
||||||
|
|
||||||
@@ -26,6 +29,14 @@ export async function dynamicActivate(locale: AppLanguage) {
|
|||||||
i18n.loadAndActivate({locale, messages: messagesFr})
|
i18n.loadAndActivate({locale, messages: messagesFr})
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
case AppLanguage.de: {
|
||||||
|
i18n.loadAndActivate({locale, messages: messagesDe})
|
||||||
|
break
|
||||||
|
}
|
||||||
|
case AppLanguage.es: {
|
||||||
|
i18n.loadAndActivate({locale, messages: messagesEs})
|
||||||
|
break
|
||||||
|
}
|
||||||
default: {
|
default: {
|
||||||
i18n.loadAndActivate({locale, messages: messagesEn})
|
i18n.loadAndActivate({locale, messages: messagesEn})
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -24,6 +24,14 @@ export async function dynamicActivate(locale: AppLanguage) {
|
|||||||
mod = await import(`./locales/fr/messages`)
|
mod = await import(`./locales/fr/messages`)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
case AppLanguage.de: {
|
||||||
|
mod = await import(`./locales/de/messages`)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
case AppLanguage.es: {
|
||||||
|
mod = await import(`./locales/es/messages`)
|
||||||
|
break
|
||||||
|
}
|
||||||
default: {
|
default: {
|
||||||
mod = await import(`./locales/en/messages`)
|
mod = await import(`./locales/en/messages`)
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ export enum AppLanguage {
|
|||||||
hi = 'hi',
|
hi = 'hi',
|
||||||
ja = 'ja',
|
ja = 'ja',
|
||||||
fr = 'fr',
|
fr = 'fr',
|
||||||
|
de = 'de',
|
||||||
|
es = 'es',
|
||||||
}
|
}
|
||||||
|
|
||||||
interface AppLanguageConfig {
|
interface AppLanguageConfig {
|
||||||
@@ -21,6 +23,8 @@ export const APP_LANGUAGES: AppLanguageConfig[] = [
|
|||||||
{code2: AppLanguage.hi, name: 'हिंदी'},
|
{code2: AppLanguage.hi, name: 'हिंदी'},
|
||||||
{code2: AppLanguage.ja, name: '日本語'},
|
{code2: AppLanguage.ja, name: '日本語'},
|
||||||
{code2: AppLanguage.fr, name: 'Français'},
|
{code2: AppLanguage.fr, name: 'Français'},
|
||||||
|
{code2: AppLanguage.de, name: 'Deutsch'},
|
||||||
|
{code2: AppLanguage.es, name: 'Español'},
|
||||||
]
|
]
|
||||||
|
|
||||||
export const LANGUAGES: Language[] = [
|
export const LANGUAGES: Language[] = [
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user