Skip to content

Commit

Permalink
v0.3.0
Browse files Browse the repository at this point in the history
- docker-compose file changed
    - Now runs migrations
    - Instead of requiring source code, pulls up image from Docker Hub
- Docs updated
- v0.3.0 is ready to go

v0.3.0-dev
    - Version bumped to 0.3.0
    - NextAuth.js Introduced
        - OAuth now works with MMDL!
        - Supports Keycloak, Google, Authentik out of the box. The rest (those supported by NextAuth.js) can be added manually by the user.
    - Sequelize formally introduced
        - Models and migrations generated
    - Bug fixes

v0.1.9
- Removed Fullcalendar script import from _app.js
    - Looks like calendar view works without it.
- Fixed calendar/view page not redirecting if user isn't logged in.

v0.1.8
- Features added to Gantt view:
    - Double click edits task
    - Drag and drop, expansion/contraction enabled.
    - Added help option.
- Fixed type error in HomeTasks.tsx
- Fixed mysql port variable in docker-compose.yml.sample
- Bumped up some @fullcalendar packages. Meant to fix some bugs with fullcalendar not working with NextJS.
- Bumped version to 0.1.8
- Calendar Views now have more options
    - Switch to enable showing tasks
    - Option to select displayed calendars
- API Change: caldav/calendars/events/db/all now also includes caldav_accounts_id for each event in output
- Bug fix: Done tasks being shown in lists filtered just with Labels.

v0.1.7
- Added constant VERSION_NUMBER
- Breaking change:
    Changed hashing algorithm for user password to bcrypt instead of sha512.
    - Reset password if you face trouble logging in after update.
- Fixed bug: task list in Home Page not being updated on adding a new task
- Bit of rewrite to home page -- getting ready for user to customise home page.

v0.1.6
- Enter now submits login form #36
- Minor bug fixes

- Bumped up some of packages' version numbers

Fixed error reporting in case registering CalDAV account fails.
    - Error from tsdav is now shown to user

v0.1.5.4
- Added a docker image build Github action

v0.1.5.3
- Node v14.x removed from github action

v0.1.5.2
- Added github action - build library on pull request, and push to main
- Bug fix - Recurrence did not take interval into account.

-pull request #28
- Fixed a minor bug with router not being defined in TaskList
- Bumped up version number

v0.1.5
- Added user setting to set default view for calendars (#26)
- Fixed due date colour in TaskUI for recurring objects.
- Fixed bug on home screen, where tasks wouldn't refresh on change or adding.

v0.1.4
- Version number fixed, build sometime fails on node if version follows scheme x.x.x.x.

v0.1.3.0
- Redesigned home page
    - It now features a way for user to see all tasks, list, filters
- Small redesign to top bar
    - Has more options that were only available in task view
- Fixed bug while adding task on the Home Page

v0.1.2.9
    - DashboardView.js -- Make sure tasks are not added multiple times
    - Added internal .env variable : NEXT_PUBLIC_VERSION_NUMBER
    - Version number is displayed in Settings page.
    - Getting project ready to support both JS and TS
        - Added tsconfig.json
    - removed npm sharp as a dependency, because with it `npm build` ends up requiring sudo in some cases.

v0.1.2.8
    - Better error handling
        - server shouldn't crash all the time, especially before installation
        - So many try catches like you'd not believe
        - most instances of resolve replaced with return resolve
    - npm sharp added as a dependency("Required" by NextJS)
    - NextJS telemetry disabled.
    - Structure of config file changed
        - Makes it more easier for new installation
        - Docs updated to reflect the same.

v0.1.2.7
    - Fixed bug in GanttView, created by rendering of recurring tasks.

v0.1.2.6
    - The next pending instance of repeating tasks is now correctly parsed by: a) filters  b)in GanttView, c) in Calendar View.
    - vtodogenerator is now used from npm, added as a dependency.
    - Minor changes to docs.

    v0.1.2.5
    - Small changes to docs.
        - Instructions to use docker compose.
    - Fixed incorrect placeholders on Add CalDAV Account page. (Github issue #17)

v0.1.2.4
    - First attempt at having a docker image.
        - Docker image is now available.
        - Docs have been updated to reflect the same.
    - Minor fixes to installation process
        - Now the installer check whether user has the database installed or not.

v0.1.2.3
- Fixed "Add to my day" removing recurrence information from task.
- Improved handling of "task done" checkbox click for recurrence tasks.
    - Only the current instance is now marked as done.
- Minor UI changes and improvements
    - Added a link to manage Caldav accounts in Settings page.

v0.1.2.2

- Fixed tasks not being fetched for Radicale.

v0.1.2.1-dev

- Changes to docs folder structure.
- Fixed bug with task relations. Now MMDL is more compatible with other apps like JTX Board.
- Repeating task support added.
- Added dedicated calendar view.
  • Loading branch information
aa-tree committed Jul 31, 2023
1 parent 83a2dc7 commit ef7efe1
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 14 deletions.
25 changes: 20 additions & 5 deletions src/components/common/AppBar/AppBarGenericClass.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@ import { getUserNameFromCookie } from "@/helpers/frontend/cookies";
import Image from "next/image";
import { signOut, useSession } from "next-auth/react";
import { getNextAuthSessionData, nextAuthEnabled } from "@/helpers/thirdparty/nextAuth";
import { installCheck } from "@/helpers/install";


class AppBarGeneric_ClassComponent extends Component {
constructor(props) {
super(props)
this.state = { isSyncing: this.props.isSyncing, username: "", }
this.state = { isSyncing: this.props.isSyncing, username: "", installed: true }
this.i18next = getI18nObject()
this.logoClicked = this.logoClicked.bind(this)
this.taskViewClicked = this.taskViewClicked.bind(this)
Expand All @@ -35,10 +36,14 @@ class AppBarGeneric_ClassComponent extends Component {
this.manageFilterClicked = this.manageFilterClicked.bind(this)
this.labelManageClicked = this.labelManageClicked.bind(this)
this.manageCaldavClicked = this.manageCaldavClicked.bind(this)
this.notInstalledBannerClicked = this.notInstalledBannerClicked.bind(this)
}
componentDidMount(){
async componentDidMount(){
this.setState({isSyncing: this.props.isSyncing})

const installed = await installCheck(this.props.router)
if(!installed){
this.setState({installed: false})
}
var context = this
setInterval(() => {
//context.syncButtonClicked()
Expand Down Expand Up @@ -71,7 +76,9 @@ componentDidMount(){

}


notInstalledBannerClicked(){
this.props.router.push("/install")
}
componentDidUpdate(prevProps, prevState) {

if (this.props.isSyncing !== prevProps.isSyncing) {
Expand Down Expand Up @@ -131,8 +138,14 @@ async syncButtonClicked() {
aria-hidden="true"
/>) : (<IoSyncCircleOutline size={24} onClick={this.syncButtonClicked} />)

let notInstalledBanner = null
if(!this.state.installed){
notInstalledBanner = (<div onClick={this.notInstalledBannerClicked} style={{background: "darkred", textAlign:"center", color:"white"}}>{this.i18next.t("MMDL_NOT_INSTALLED")}</div>)
}
return (
<Navbar className="nav-pills nav-fill" style={{background: PRIMARY_COLOUR, padding: 20}} variant="dark" sticky="top" expand="lg">
<>
{notInstalledBanner}
<Navbar className="nav-pills nav-fill" style={{background: PRIMARY_COLOUR, padding: 20}} variant="dark" sticky="top" expand="lg">
<Navbar.Brand onClick={this.logoClicked} >
<Image
src="/logo.png"
Expand Down Expand Up @@ -203,6 +216,8 @@ async syncButtonClicked() {


</Navbar>

</>
)
}
}
Expand Down
31 changes: 30 additions & 1 deletion src/helpers/api/install.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,14 +91,43 @@ export async function isInstalled(log)
}
}

return _.isEmpty(_.xor(listOfTablesFromDb, FINAL_TABLES))
console.log("listOfTablesFromDb", listOfTablesFromDb)

//return _.isEmpty(_.xor(listOfTablesFromDb, FINAL_TABLES))
//return true
return tableArrayMatch(listOfTablesFromDb, log)
}else{
return false
}
}

export function tableArrayMatch(tablesFromDB, log){

if(!tablesFromDB){
return false
}
if(!Array.isArray(tablesFromDB) ){
return false
}
if(tablesFromDB.length<FINAL_TABLES.length){
return false
}
let found = 0
for(const i in tablesFromDB){
for (const j in FINAL_TABLES){
if(FINAL_TABLES[j].toLowerCase()==tablesFromDB[i].toLowerCase()){
if(log) console.log(FINAL_TABLES[j]+ "found!")
found++
}
}
}

if(found==FINAL_TABLES.length){
return true
}else{
return false
}
}
export async function getListofTables()
{

Expand Down
3 changes: 2 additions & 1 deletion src/helpers/install.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ export async function installCheck(router: NextRouter){
const installed: boolean = await getIfInstalled()

if(!installed){
router.push('/install')
//router.push('/install')
}
return installed

}
1 change: 1 addition & 0 deletions src/i18n/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"ALL_DAY_EVENT": "All Day Event",
"ALL_TASKS": "All Tasks",
"ALREADY_INSTALLED": "MMDL has already been installed. Redirecting...",
"MMDL_NOT_INSTALLED":" Database tables for MMDL have not been installed. Click this banner to install.",
"APP_NAME": "Manage my Damn Life",
"APP_NAME_TITLE": "MMDL",
"BACK": "Back",
Expand Down
3 changes: 2 additions & 1 deletion src/pages/api/install/check.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ export default async function handler(req, res) {

}else{

var installed = await isInstalled()
var installed = await isInstalled(true)
console.log("installed", installed)
//We have successful connection to a database. Now we check the install info from database.
if(installed==true)
{
Expand Down
7 changes: 1 addition & 6 deletions src/pages/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,7 @@ export default function HomePage() {
// // }, [userAuthenticated])
const router = useRouter()

useEffect(()=>{
installCheck(router).then(()=>{
setInstallChecked(true)

})
}, [router])


useEffect(() =>{
if(installChecked){
Expand Down

0 comments on commit ef7efe1

Please sign in to comment.