local NOTIFS = {
  ["follow"] = function(notif) return notif.type end,
  ["favourite"] = function(notif) return notif.type end,
  ["reblog"] = function(notif) return notif.type end,
  ["mention"] = function(notif) return notif.type end,
  ["pleroma:emoji_reaction"] = function(notif)
    if notif["emoji_url"] then
      return '<img class="avatar" src="' .. EscapeHtml(notif["emoji_url"]) .. '" title="' .. EscapeHtml(notif["emoji"]) .. '">'
    else
      return "<span>" .. notif.emoji .. "</span>"
    end
  end,
  ["pleroma:chat_mention"] = function(notif) return notif.type:gsub("pleroma:", "") end,
  ["pleroma:report"] = function(notif) return notif.type:gsub("pleroma:", "") end,
  ["move"] = function(notif) return notif.type end,
  ["follow_request"] = function(notif) return notif.type end,
  ["poll"] = function(notif) return notif.type end,
  ["status"] = function(notif) return notif.type end,
  ["update"] = function(notif) return notif.type end,
  ["admin.sign_up"] = function(notif) return notif.type end,
  ["admin.report"] = function(notif) return notif.type end,
}

setmetatable(NOTIFS, {
  __index = function()
    return function(notif)
      if notif and notif.type then
        return notif.type
      end
      return "unknown"
    end
  end,
})

return function(notification)
  return NOTIFS[notification.type](notification)
end
