Představujeme Meteor Flashnews

Dnes oficiálně oznamuji vydání mého nejnovějšího balíčku Meteor s názvem flashnews!

O co tedy jde? Flashnews, jak název napovídá, je pro rychlé zprávy, které nezaručují celý blogový příspěvek nebo mají rychle oznámit něco důležitého. Ale jde to mnohem dál. Můžete si naplánovat, kdy se vaše zprávy mají objevit, a pokud chcete, kdy se přestanou zobrazovat. Chcete-li, aby byly stránky s více jazyky ještě úžasnější, můžete zprávy psát v různých jazycích, abyste oslovili své publikum způsobem, kterému rozumí. Stejně jako u načasování máme i zde podobné možnosti. Můžete si vybrat, zda se novinky budou zobrazovat pouze ve specifikovaných jazycích, nebo se nebudou uživateli zobrazovat vůbec, pokud daný jazyk nemá nastaven. Nakonec můžete určit výchozí jazyk, který se uživateli zobrazí, pokud neexistuje překlad zpráv do jazyka uživatele.

Jednoduchá blesková novinka nyní nabyla na složitosti, aby dobře fungovala v aplikacích, které podporují více jazyků.

Začínáme

Toto je balíček Meteor, takže jej můžete nainstalovat do aplikace Meteor následovně:

meteor add freedombase:flashnews

Získáte tak kolekci bleskových zpráv, základních publikací a metod, které by měly sloužit většině potřeb.

Neexistuje žádné bezplatné uživatelské rozhraní a budete si ho muset vytvořit sami. Moji sponzoři získají přístup k uživatelskému rozhraní, které jsem vytvořil pro Socialize-starter.

Sbírka

import { FlashNewsCollection } from 'freedombase:flashnews'

Sbírku můžete importovat přímo takto.

Publikace

freedombase:flashnews-getMain

Získá aktuální bleskové zprávy pro web

  • limit {Number} Limit pro vrácení, výchozí hodnota je 3
  • language {String} Požadovaný jazyk zpráv, výchozí hodnota je en vrátí {Mongo.Cursor}

freedombase:flashnews-getFor

Získá aktuální flash zprávy pro daný objekt

  • objectType {String}
  • objectId {String}
  • limit {Number} Limit pro návrat, výchozí hodnota je 5
  • language {String} Požadovaný jazyk zpráv, výchozí je en vrátí {Mongo.Cursor}

Metody

Existuje jeden způsob, jak přidat nové flashnews do DB. Vřele doporučuji použít beforeFlashNewsInsert háček (popsáno později), abyste omezili, kdo je může přidávat.

freedombase:flashnews-create

Vytvořte novou flashovou zprávu

  • content {Object} Objekt s různými národními prostředími by měl mít formát takto:{ en:'First news', cs:'První novinka' } nebo místo řetězců může obsahovat objekt s vaší výchozí strukturou pro daný jazyk.
  • defaultLanguage {String} Výchozí jazyk zpráv. Tento jazyk bude použit, když požadovaný jazyk není k dispozici.
  • startsAt {Date} Počáteční datum, kdy se mají zprávy zobrazovat, ve výchozím nastavení je to datum vytvoření.
  • endsAt {Date} Přidejte datum, kdy se mají zprávy přestat zobrazovat, ve výchozím nastavení nedefinováno.
  • objectType {String} APP_NEWS ve výchozím nastavení, ale můžete si zde nastavit vlastní a v kombinaci s objectId můžete například vytvářet vlastní zpravodajský kanál pro skupiny.
  • objectId {String} Použijte v kombinaci s objectType k určení konkrétního objektu, pod kterým se mají zobrazovat zprávy.
  • onlyDisplayIn {String[]} Určete, v jakých jazycích se mají zprávy zobrazovat, pokud požadovaný jazyk není k dispozici, použije se defaultLanguage.
  • onlyDisplayOn {String[]} Zobrazovat obsah pouze v jazycích uvedených v tomto poli. Pokud jazyk neodpovídá žádnému v tomto poli, zprávy se nezobrazí.

Další funkce a konstanty

APP_NEWS

import { APP_NEWS } from 'freedombase:flashnews'

Konstanta pro globální kategorii zpráv. Když je flashnews vložen do objectType, bude součástí globální sady zpráv aplikace.

Schéma

import { FlashNewsSchema } from 'freedombase:flashnews'

Schéma můžete importovat pro kolekci a použít je ve svých vlastních funkcích pro ověření nebo jiné účely.

Háčky

import { beforeFlashNewsInsert, afterFlashNewsInsert } from 'freedombase:flashnews'

Pomocí meteor/callback-hook , můžete nastavit, aby se tyto háčky spouštěly před a po poskytnuté metodě vkládání.

beforeFlashNewsInsert.register((
  userId,
  content,
  defaultLanguage,
  startsAt,
  endsAt,
  objectType,
  objectId,
  onlyDisplayIn,
  onlyDisplayOn) => {
  // Here check the user's credentials and return true if to proceed or false if to return unauthorized error
  return !!userId
})
afterFlashNewsInsert.register(({
    _id: newsId,
    content,
    defaultLanguage,
    userId,
    startsAt,
    endsAt,
    objectType,
    objectId,
    onlyDisplayIn,
    onlyDisplayOn
}) => {
  // Returns the details of the inserted news.
})

Metody dokumentu

Jakmile načtete zprávy, můžete v dokumentu volat následující metody.

getContent

Převezme jazyk, ve kterém chcete zprávy zobrazovat, a vrátí obsah podle všech nastavených omezení.
Pomocí této metody správně načtete obsah.

// subscription freedombase:flashnews-getMain
const userLanguage = 'en'
const news = FlashNewsCollection.find().fetch()
const newsList = news.map((item) => {
  return item.getContent(userLanguage)
})

availableLanguages

Zobrazí seznam všech dostupných jazyků pro aktuální zprávy.

UI

V tomto balíčku není žádné uživatelské rozhraní (ačkoli moji sponzoři mají přístup k ukázkové implementaci Reactu), ale mělo by být velmi snadné implementovat vaši vlastní.

Poté se přihlaste k odběru publikace, kterou chcete použít

const news = FlashNewsCollection.find().fetch()

chcete-li získat všechny novinky, které máte na klientovi, nebo je omezit, pokud věci ukládáte do mezipaměti nebo chcete udělat něco konkrétního a poté procházet konstantou zpráv a zapisovat obsah do uživatelského rozhraní:

const newsContent = news.map(newsItem => newsItem.getContent('en'))

Co bude dál?

Co se mě týká, na straně funkcí jsou věci hotové, ale možná se něco objeví, až to integruji do více aplikací. Předpokládám především zlepšení technické a organizační stránky věci. Stále musím přijít na správné testování, protože současný způsob nefunguje správně. Zlepšení dokumentace je vždy dobrá věc a pak cokoli dalšího, co se objeví.
Co byste chtěli vidět?

Pokud se vám moje práce líbí, podpořte mě prosím na GitHub Sponsors ❤️.