Skip to content

Commit 108fbcd

Browse files
committed
Add Router.replace
1 parent 8f1e1c2 commit 108fbcd

File tree

4 files changed

+30
-11
lines changed

4 files changed

+30
-11
lines changed

Diff for: packages.dhall

+2-2
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ in upstream
9999
-------------------------------
100100
-}
101101
let upstream =
102-
https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20220822/packages.dhall
103-
sha256:908b4ffbfba37a0a4edf806513a555d0dbcdd0cde7abd621f8d018d2e8ecf828
102+
https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20230105/packages.dhall
103+
sha256:3e9fbc9ba03e9a1fcfd895f65e2d50ee2f5e86c4cd273f3d5c841b655a0e1bda
104104

105105
in upstream

Diff for: spago.dhall

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ to generate this file without the comments in this block.
1212
-}
1313
{ name = "my-project"
1414
, dependencies =
15-
[ "aff-promise"
15+
[ "aff"
16+
, "aff-promise"
1617
, "console"
1718
, "effect"
1819
, "functions"
20+
, "maybe"
1921
, "nullable"
2022
, "prelude"
2123
, "react-basic"

Diff for: src/Next/Router.js

+11-8
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
1-
export { useRouter as useRouter_ } from 'next/router'
1+
export { useRouter as useRouter_ } from "next/router";
22
import router from "next/router";
33

44
export function _on(event) {
5-
return function(cb) {
6-
return function() {
5+
return function (cb) {
6+
return function () {
77
router.events.on(event, cb);
88
};
99
};
1010
}
1111

1212
export function _off(event) {
13-
return function(cb) {
14-
return function() {
13+
return function (cb) {
14+
return function () {
1515
router.events.off(event, cb);
1616
};
1717
};
1818
}
1919

20-
export const query = (router) => router.query
20+
export const query = (router) => router.query;
2121

22-
export const push = (router) => (route) => () => router.push(route)
22+
export const push = (router) => (route) => () => router.push(route);
2323

24-
export const route = (router) => router.route
24+
export const route = (router) => router.route;
25+
26+
export const replaceImpl = (router) => (route) => (as) => (options) => () =>
27+
router.replace(route, as, options);

Diff for: src/Next/Router.purs

+14
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
module Next.Router where
22

33
import Prelude
4+
5+
import Control.Promise (Promise)
6+
import Control.Promise as Promise
7+
import Data.Maybe (Maybe)
8+
import Data.Nullable (Nullable)
9+
import Data.Nullable as Nullable
410
import Effect (Effect)
11+
import Effect.Aff (Aff)
512
import Effect.Uncurried (mkEffectFn1)
613
import React.Basic.Hooks (Hook, unsafeHook)
714

@@ -18,6 +25,13 @@ foreign import query :: forall q. Router -> q
1825

1926
foreign import push :: Router -> String -> Effect Unit
2027

28+
type RoutingOptions = { shallow :: Boolean }
29+
30+
foreign import replaceImpl :: Router -> String -> Nullable String -> Nullable RoutingOptions -> Effect (Promise Boolean)
31+
32+
replace :: Router -> String -> Maybe String -> Maybe RoutingOptions -> Aff Boolean
33+
replace router url asUrl options = replaceImpl router url (Nullable.toNullable asUrl) (Nullable.toNullable options) # Promise.toAffE
34+
2135
foreign import route :: Router -> String
2236

2337
foreign import _on :: forall a. String -> a -> Effect Unit

0 commit comments

Comments
 (0)