mirror of
https://github.com/usememos/memos.git
synced 2025-06-05 22:09:59 +02:00
chore: update version to 0.9.1
(#882)
This commit is contained in:
@@ -315,19 +315,14 @@ func (s *Server) registerMemoRoutes(g *echo.Group) {
|
|||||||
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("ID is not a number: %s", c.Param("memoId"))).SetInternal(err)
|
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("ID is not a number: %s", c.Param("memoId"))).SetInternal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
currentTs := time.Now().Unix()
|
userID, ok := c.Get(getUserIDContextKey()).(int)
|
||||||
memoResourceUpsert := &api.MemoResourceUpsert{
|
if !ok {
|
||||||
UpdatedTs: ¤tTs,
|
return echo.NewHTTPError(http.StatusUnauthorized, "Missing user in session")
|
||||||
}
|
}
|
||||||
|
memoResourceUpsert := &api.MemoResourceUpsert{}
|
||||||
if err := json.NewDecoder(c.Request().Body).Decode(memoResourceUpsert); err != nil {
|
if err := json.NewDecoder(c.Request().Body).Decode(memoResourceUpsert); err != nil {
|
||||||
return echo.NewHTTPError(http.StatusBadRequest, "Malformatted post memo resource request").SetInternal(err)
|
return echo.NewHTTPError(http.StatusBadRequest, "Malformatted post memo resource request").SetInternal(err)
|
||||||
}
|
}
|
||||||
memoResourceUpsert.MemoID = memoID
|
|
||||||
|
|
||||||
if _, err := s.Store.UpsertMemoResource(ctx, memoResourceUpsert); err != nil {
|
|
||||||
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to upsert memo resource").SetInternal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
resourceFind := &api.ResourceFind{
|
resourceFind := &api.ResourceFind{
|
||||||
ID: &memoResourceUpsert.ResourceID,
|
ID: &memoResourceUpsert.ResourceID,
|
||||||
}
|
}
|
||||||
@@ -335,6 +330,18 @@ func (s *Server) registerMemoRoutes(g *echo.Group) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to fetch resource").SetInternal(err)
|
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to fetch resource").SetInternal(err)
|
||||||
}
|
}
|
||||||
|
if resource == nil {
|
||||||
|
return echo.NewHTTPError(http.StatusBadRequest, "Resource not found").SetInternal(err)
|
||||||
|
} else if resource.CreatorID != userID {
|
||||||
|
return echo.NewHTTPError(http.StatusUnauthorized, "Unauthorized to bind this resource").SetInternal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
memoResourceUpsert.MemoID = memoID
|
||||||
|
currentTs := time.Now().Unix()
|
||||||
|
memoResourceUpsert.UpdatedTs = ¤tTs
|
||||||
|
if _, err := s.Store.UpsertMemoResource(ctx, memoResourceUpsert); err != nil {
|
||||||
|
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to upsert memo resource").SetInternal(err)
|
||||||
|
}
|
||||||
|
|
||||||
c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8)
|
c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8)
|
||||||
if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(resource)); err != nil {
|
if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(resource)); err != nil {
|
||||||
|
@@ -42,6 +42,8 @@ func NewServer(profile *profile.Profile) *Server {
|
|||||||
|
|
||||||
e.Use(middleware.CORS())
|
e.Use(middleware.CORS())
|
||||||
|
|
||||||
|
e.Use(middleware.Secure())
|
||||||
|
|
||||||
e.Use(middleware.TimeoutWithConfig(middleware.TimeoutConfig{
|
e.Use(middleware.TimeoutWithConfig(middleware.TimeoutConfig{
|
||||||
Skipper: middleware.DefaultSkipper,
|
Skipper: middleware.DefaultSkipper,
|
||||||
ErrorMessage: "Request timeout",
|
ErrorMessage: "Request timeout",
|
||||||
|
@@ -7,10 +7,10 @@ import (
|
|||||||
|
|
||||||
// Version is the service current released version.
|
// Version is the service current released version.
|
||||||
// Semantic versioning: https://semver.org/
|
// Semantic versioning: https://semver.org/
|
||||||
var Version = "0.9.0"
|
var Version = "0.9.1"
|
||||||
|
|
||||||
// DevVersion is the service current development version.
|
// DevVersion is the service current development version.
|
||||||
var DevVersion = "0.9.0"
|
var DevVersion = "0.9.1"
|
||||||
|
|
||||||
func GetCurrentVersion(mode string) string {
|
func GetCurrentVersion(mode string) string {
|
||||||
if mode == "dev" {
|
if mode == "dev" {
|
||||||
|
@@ -11,6 +11,7 @@ const AboutSiteDialog: React.FC<Props> = ({ destroy }: Props) => {
|
|||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const globalStore = useGlobalStore();
|
const globalStore = useGlobalStore();
|
||||||
const profile = globalStore.state.systemStatus.profile;
|
const profile = globalStore.state.systemStatus.profile;
|
||||||
|
const customizedProfile = globalStore.state.systemStatus.customizedProfile;
|
||||||
|
|
||||||
const handleCloseBtnClick = () => {
|
const handleCloseBtnClick = () => {
|
||||||
destroy();
|
destroy();
|
||||||
@@ -20,36 +21,36 @@ const AboutSiteDialog: React.FC<Props> = ({ destroy }: Props) => {
|
|||||||
<>
|
<>
|
||||||
<div className="dialog-header-container">
|
<div className="dialog-header-container">
|
||||||
<p className="title-text flex items-center">
|
<p className="title-text flex items-center">
|
||||||
<img className="w-7 h-auto mr-1" src="/logo.png" alt="" />
|
{t("common.about")} {customizedProfile.name}
|
||||||
{t("common.about")} memos
|
|
||||||
</p>
|
</p>
|
||||||
<button className="btn close-btn" onClick={handleCloseBtnClick}>
|
<button className="btn close-btn" onClick={handleCloseBtnClick}>
|
||||||
<Icon.X />
|
<Icon.X />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className="dialog-content-container">
|
<div className="dialog-content-container">
|
||||||
<p>{t("slogan")}</p>
|
<p className="text-sm">{customizedProfile.description || "No description"}</p>
|
||||||
<div className="border-t mt-1 pt-2 flex flex-row justify-start items-center">
|
<div className="mt-4 flex flex-row text-sm justify-start items-center">
|
||||||
<span className=" text-gray-500 mr-2">Other projects:</span>
|
<div className="flex flex-row justify-start items-center mr-2">
|
||||||
|
Powered by
|
||||||
|
<a href="https://usememos.com" className="flex flex-row justify-start items-center mr-1 hover:underline">
|
||||||
|
<img className="w-6 h-auto" src="/logo.png" alt="" />
|
||||||
|
memos
|
||||||
|
</a>
|
||||||
|
<span>v{profile.version}</span>
|
||||||
|
</div>
|
||||||
|
<GitHubBadge />
|
||||||
|
</div>
|
||||||
|
<div className="border-t mt-3 pt-2 text-sm flex flex-row justify-start items-center">
|
||||||
|
<span className="text-gray-500 mr-2">Other projects:</span>
|
||||||
<a href="https://github.com/boojack/sticky-notes" className="flex items-center underline text-blue-600 hover:opacity-80">
|
<a href="https://github.com/boojack/sticky-notes" className="flex items-center underline text-blue-600 hover:opacity-80">
|
||||||
<img
|
<img
|
||||||
className="w-5 h-auto mr-1"
|
className="w-4 h-auto mr-1"
|
||||||
src="https://raw.githubusercontent.com/boojack/sticky-notes/main/public/sticky-notes.ico"
|
src="https://raw.githubusercontent.com/boojack/sticky-notes/main/public/sticky-notes.ico"
|
||||||
alt=""
|
alt=""
|
||||||
/>
|
/>
|
||||||
<span>Sticky notes</span>
|
<span>Sticky notes</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div className="mt-4 flex flex-row text-sm justify-start items-center">
|
|
||||||
<GitHubBadge />
|
|
||||||
<span className="ml-2">
|
|
||||||
{t("common.version")}:
|
|
||||||
<span className="font-mono">
|
|
||||||
{profile.version}-{profile.mode}
|
|
||||||
</span>
|
|
||||||
🎉
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
@@ -35,11 +35,11 @@ const Sidebar = () => {
|
|||||||
<button className="btn action-btn" onClick={() => showDailyReviewDialog()}>
|
<button className="btn action-btn" onClick={() => showDailyReviewDialog()}>
|
||||||
<span className="icon">📅</span> {t("sidebar.daily-review")}
|
<span className="icon">📅</span> {t("sidebar.daily-review")}
|
||||||
</button>
|
</button>
|
||||||
|
<Link to="/explore" className="btn action-btn">
|
||||||
|
<span className="icon">🏂</span> {t("common.explore")}
|
||||||
|
</Link>
|
||||||
{!userStore.isVisitorMode() && (
|
{!userStore.isVisitorMode() && (
|
||||||
<>
|
<>
|
||||||
<Link to="/explore" className="btn action-btn">
|
|
||||||
<span className="icon">🏂</span> {t("common.explore")}
|
|
||||||
</Link>
|
|
||||||
<button className="btn action-btn" onClick={handleSettingBtnClick}>
|
<button className="btn action-btn" onClick={handleSettingBtnClick}>
|
||||||
<span className="icon">⚙️</span> {t("sidebar.setting")}
|
<span className="icon">⚙️</span> {t("sidebar.setting")}
|
||||||
</button>
|
</button>
|
||||||
|
Reference in New Issue
Block a user