mirror of
https://github.com/bendtherules/is-nifty-open.git
synced 2026-08-19 00:32:31 +00:00
Refactor redirect to dayname path logic
This commit is contained in:
@@ -8,19 +8,59 @@ import { NextOpenCloseMini } from '../NextOpenCloseMini';
|
|||||||
import { allHolidays } from '../../Data';
|
import { allHolidays } from '../../Data';
|
||||||
import { Utils, OpenOrClose } from "../../Utils";
|
import { Utils, OpenOrClose } from "../../Utils";
|
||||||
|
|
||||||
enum OpenOrCloseOrClosed {
|
const enum OpenOrCloseOrClosed {
|
||||||
Open = "open",
|
Open = "open",
|
||||||
Close = "close",
|
Close = "close",
|
||||||
Closed = "closed"
|
Closed = "closed"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const enum DayNames {
|
||||||
|
today = "today",
|
||||||
|
tomorrow = "tomorrow",
|
||||||
|
yesterday = "yesterday",
|
||||||
|
}
|
||||||
|
|
||||||
class IsNiftyOpenApp extends React.Component {
|
class IsNiftyOpenApp extends React.Component {
|
||||||
|
static mapAbsoluteDateToRelativeDayName(xDay: moment.Moment): DayNames | undefined {
|
||||||
|
// Redirect to relative if day is within +-1 day of today
|
||||||
|
let tmpToday = Utils.createTodayDateInIndiaTZ();
|
||||||
|
let tmpTomorrow = tmpToday.clone().add(1, "d");
|
||||||
|
let tmpYesterday = tmpToday.clone().subtract(1, "d");
|
||||||
|
|
||||||
|
if (Utils.checkSameDayInSameTZ(xDay, tmpToday)) {
|
||||||
|
|
||||||
|
return DayNames.today;
|
||||||
|
|
||||||
|
} else if (Utils.checkSameDayInSameTZ(xDay, tmpTomorrow)) {
|
||||||
|
|
||||||
|
return DayNames.tomorrow;
|
||||||
|
|
||||||
|
} else if (Utils.checkSameDayInSameTZ(xDay, tmpYesterday)) {
|
||||||
|
|
||||||
|
return DayNames.yesterday;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
return undefined;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
calcOpenOrCloseForOpenCloseMini(xDay: moment.Moment) {
|
calcOpenOrCloseForOpenCloseMini(xDay: moment.Moment) {
|
||||||
var isTodayEventHoliday = Utils.getEventHolidayOnDate(xDay, allHolidays) !== undefined;
|
var isTodayEventHoliday = Utils.getEventHolidayOnDate(xDay, allHolidays) !== undefined;
|
||||||
|
|
||||||
return isTodayEventHoliday ? OpenOrClose.Open : OpenOrClose.Close;
|
return isTodayEventHoliday ? OpenOrClose.Open : OpenOrClose.Close;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
returnRedirectToDayNamePathIfPossible(openOrClose: OpenOrClose, xDay: moment.Moment): JSX.Element | undefined {
|
||||||
|
var relativeDayName = IsNiftyOpenApp.mapAbsoluteDateToRelativeDayName(xDay);
|
||||||
|
if (relativeDayName !== undefined) {
|
||||||
|
return this.redirectToOpenRelativeDay(openOrClose, relativeDayName);
|
||||||
|
} else {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
renderAllPanels(questionString: OpenOrCloseOrClosed, dateText: string): React.ReactElement<{}> {
|
renderAllPanels(questionString: OpenOrCloseOrClosed, dateText: string): React.ReactElement<{}> {
|
||||||
var question: OpenOrClose;
|
var question: OpenOrClose;
|
||||||
if (questionString === OpenOrCloseOrClosed.Open) {
|
if (questionString === OpenOrCloseOrClosed.Open) {
|
||||||
@@ -31,36 +71,39 @@ class IsNiftyOpenApp extends React.Component {
|
|||||||
|
|
||||||
let xDay: moment.Moment, xPlusOneDay: moment.Moment;
|
let xDay: moment.Moment, xPlusOneDay: moment.Moment;
|
||||||
{
|
{
|
||||||
const enum DateNames {
|
|
||||||
today = "today",
|
|
||||||
tomorrow = "tomorrow",
|
|
||||||
yesterday = "yesterday",
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dateText === undefined) {
|
if (dateText === undefined) {
|
||||||
return this.redirectToOpenToday(question);
|
return this.redirectToOpenRelativeDay(question);
|
||||||
}
|
}
|
||||||
dateText = dateText.toLowerCase();
|
dateText = dateText.toLowerCase();
|
||||||
|
|
||||||
switch (dateText) {
|
switch (dateText) {
|
||||||
case DateNames.today:
|
case DayNames.today:
|
||||||
xDay = Utils.createTodayDateInIndiaTZ();
|
xDay = Utils.createTodayDateInIndiaTZ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DateNames.tomorrow:
|
case DayNames.tomorrow:
|
||||||
xDay = Utils.createTodayDateInIndiaTZ().add(1, "d");
|
xDay = Utils.createTodayDateInIndiaTZ().add(1, "d");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DateNames.yesterday:
|
case DayNames.yesterday:
|
||||||
xDay = Utils.createTodayDateInIndiaTZ().subtract(1, "d");
|
xDay = Utils.createTodayDateInIndiaTZ().subtract(1, "d");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
let possiblyXDay = Utils.createSomeDateInIndiaTZ(dateText);
|
let possiblyXDay = Utils.createSomeDateInIndiaTZ(dateText);
|
||||||
if (possiblyXDay.isValid()) {
|
if (possiblyXDay.isValid()) {
|
||||||
|
{
|
||||||
|
// Redirect to day name path if possible
|
||||||
|
let redirectDayNamePath = this.returnRedirectToDayNamePathIfPossible(question, possiblyXDay);
|
||||||
|
if (redirectDayNamePath !== undefined) {
|
||||||
|
return redirectDayNamePath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Else continue
|
||||||
xDay = possiblyXDay;
|
xDay = possiblyXDay;
|
||||||
} else {
|
} else {
|
||||||
return this.redirectToOpenToday(question);
|
return this.redirectToOpenRelativeDay(question);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -99,8 +142,8 @@ class IsNiftyOpenApp extends React.Component {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
redirectToOpenToday(question: OpenOrClose = OpenOrClose.Open) {
|
redirectToOpenRelativeDay(question: OpenOrClose = OpenOrClose.Open, dayName: DayNames = DayNames.today): JSX.Element {
|
||||||
return (<Redirect to={`/${question}/today`} />);
|
return (<Redirect to={`/${question}/${dayName}`} />);
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@@ -116,7 +159,7 @@ class IsNiftyOpenApp extends React.Component {
|
|||||||
props.match.params.dateText);
|
props.match.params.dateText);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{this.redirectToOpenToday()}
|
{this.redirectToOpenRelativeDay()}
|
||||||
</Switch>
|
</Switch>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user