Sivin Varghese
88587b1ccb
feat: Add natural language date parser for snooze functionality ( #13587 )
...
# Pull Request Template
## Description
This PR introduces a custom, lightweight natural-language date parser
(dependency-free except for date-fns) to power snooze actions via the
command bar (e.g., “Remind me tomorrow at 6am”). It also adds support
for multi-language searches.
<details>
<summary>Supported Formats</summary>
## Snooze Date Parser — Supported Input Formats
## 1. Durations
Specify an amount of time from now.
### Basic
- `5 minutes` · `2 hours` · `3 days` · `1 week` · `6 months` · `ten
year`
- `in 2 hours` · `in 30 minutes` · `in a week` · `in a month`
- `5 minutes from now` · `a week from now` · `two weeks from now`
### Half / fractional
- `half hour` · `half day` · `half week` · `half month`
- `in half a day` · `in half an hour` · `in half a week`
- `one and a half hours` · `in one and a half hours`
- `1.5 hours` · `2.5 days`
### Compound
- `1 hour and 30 minutes` · `2 hours and 15 minutes`
- `2 days at 3pm` · `1 week at 9am`
### Shorthand (no spaces)
- `2h` · `30m` · `1h30m` · `2h15m`
- `1h30minutes` · `2hr15min` · `1hour30min`
### Informal quantities
- `couple hours` · `a couple of days` · `in a couple hours`
- `a few minutes` · `in a few hours` · `in a few days`
- `fortnight` · `in a fortnight` _(= 2 weeks)_
### Trailing "later"
- `2 days later` · `a week later` · `month later`
### Prefix words (`after` / `within`)
- `after 2 hours` · `after 3 days` · `after ten year`
- `within a week` · `within 2 hours`
### Recognised word-numbers
`a` (1) · `an` (1) · `one` – `twenty` · `thirty` · `forty` · `fifty` ·
`sixty` · `ninety` · `half` (0.5) · `couple` (2) · `few` (3)
---
## 2. Relative Days
- `today` · `tonight` · `tomorrow`
- `tomorrow morning` · `tomorrow afternoon` · `tomorrow evening` ·
`tomorrow night`
- `tomorrow at 3pm` · `tomorrow 9` · `tonight at 8` · `tonight at 10pm`
- `tomorrow same time` · `same time tomorrow`
- `day after tomorrow` · `the day after tomorrow` · `day after tomorrow
at 2pm`
- `later today` · `later this afternoon` · `later this evening`
---
## 3. Weekdays
- `monday` · `friday` · `wed` · `thu`
- `friday at 3pm` · `monday 9am` · `wednesday 14:30`
- `monday morning` · `friday afternoon` · `wednesday evening`
- `monday morning 6` · `friday evening 7`
- `this friday` · `upcoming monday` · `coming friday`
- `same time friday` · `same time wednesday`
---
## 4. "Next" Patterns
- `next hour` · `next week` · `next month` · `next year`
- `next week at 2pm` · `next month at 9am`
- `next monday` · `next friday` · `next friday at 3pm`
- `next monday morning` · `next friday evening`
- `monday of next week` · `next week monday`
- `next january` · `next december`
- `next business day` · `next working day`
---
## 5. Time of Day
- `morning` · `afternoon` · `evening` · `night` · `noon` · `midnight`
- `this morning` · `this afternoon` · `this evening`
- `early morning` · `late evening` · `late night`
- `morning at 8am` · `evening 6pm` · `afternoon 2pm`
- `eod` · `end of day` · `end of the day`
---
## 6. Standalone Time
- **12-hour:** `3pm` · `9am` · `at 3pm` · `at 9:30am`
- **24-hour:** `14:30` · `at 14:30`
---
## 7. Named Dates (Month + Day)
- `jan 15` · `january 15` · `march 20` · `dec 25`
- `jan 1st` · `march 3rd` · `april 2nd` · `december 31st`
- `15 march` · `25 dec` _(reversed order)_
- `jan 15 2025` · `dec 25 2025` · `march 20 next year`
- `jan 15 at 2pm` · `march 5 at 2pm`
- `december 2025` · `january 2024` _(month + year only)_
---
## 8. Month + Ordinal Patterns
Target a specific week or day within a month.
### Week of month
- `april first week` · `july 2nd week` · `feb 3rd week`
- `first week of april` · `2nd week of july`
### Day of month
- `april first day` · `march second day` · `march 5th day`
- `third day of march` · `5th day of jan at 2pm`
### Supported ordinals
- **Digit:** `1st` `2nd` `3rd` `4th` `5th` … (up to 31 for days, 5 for
weeks)
- **Word:** `first` `second` `third` `fourth` `fifth` `sixth` `seventh`
`eighth` `ninth` `tenth`
---
## 9. Formal / Numeric Dates
- **ISO:** `2025-01-15`
- **Slash (M/D/Y):** `01/15/2025`
- **Dash (D-M-Y):** `15-01-2025`
- **Dot (D.M.Y):** `15.01.2025`
- Any of the above **+ time:** `2025-01-15 at 3pm`
---
## 10. Special Phrases
- `this weekend` · `weekend` · `next weekend`
- `end of week` · `end of month`
- `end of next week` · `end of next month`
- `beginning of next week` · `start of next week`
- `beginning of next month`
---
## 11. Noise / Filler Stripping
The parser silently removes conversational prefixes so all of these work
exactly the same as the bare expression:
```
snooze for 2 hours → 2 hours
remind me tomorrow → tomorrow
please snooze until friday → friday
can you set a reminder for next week → next week
schedule this for jan 15 → jan 15
postpone to next monday → next monday
defer for 2 days → 2 days
delay it by 1 hour → 1 hour
```
### Recognised filler verbs / prefixes
`snooze` · `remind` · `remind me` · `set a reminder` · `add a reminder`
·
`schedule` · `postpone` · `defer` · `delay` · `push`
### Recognised prepositions (stripped)
`on` · `to` · `for` · `at` · `until` · `till` · `by` · `from` · `after`
· `within`
### Typo corrections
`tommorow` / `tommorrow` → `tomorrow` · `nxt` → `next`
---
## 12. Multi-Language Support
The parser supports localised input via translations in `snooze.json`.
### Translatable token categories
- **Units:** minute, hour, day, week, month, year _(singular + plural)_
- **Relative days:** tomorrow, day after tomorrow, next week / month,
this / next weekend
- **Time of day:** morning, afternoon, evening, night, noon, midnight
- **Word numbers:** one through ten, twelve, fifteen, twenty, thirty
- **Ordinals:** first through fifth
- **Structural words:** at, in, of, after, week, day, from now, next
year
- **Meridiem:** am, pm
### Auto-detected from locale
Weekday names and month names are resolved automatically via
`Intl.DateTimeFormat` for the user's locale — no manual translation
needed.
</details>
## Type of change
- [x] New feature (non-breaking change which adds functionality)
## How Has This Been Tested?
**Screenshots**
<img width="974" height="530" alt="image"
src="https://github.com/user-attachments/assets/c690d328-a0df-41d2-b531-2b4e6ce6b5fd "
/>
<img width="974" height="530" alt="image"
src="https://github.com/user-attachments/assets/fa881acc-4fed-4ba3-9166-58bd953bcb26 "
/>
<img width="974" height="530" alt="image"
src="https://github.com/user-attachments/assets/4d9a224b-641c-409c-a7ce-3dec2b5355e2 "
/>
<img width="974" height="530" alt="image"
src="https://github.com/user-attachments/assets/465b9835-d82c-4bc7-a2ae-94976ada2d3b "
/>
<img width="974" height="530" alt="image"
src="https://github.com/user-attachments/assets/839fe8fc-8943-4b66-83ca-5c61c95f24d8 "
/>
<img width="974" height="530" alt="image"
src="https://github.com/user-attachments/assets/3a9a54f2-7669-40f2-b098-a3f5c183526d "
/>
<img width="974" height="530" alt="image"
src="https://github.com/user-attachments/assets/7791ab2b-c763-49a9-90a0-e91b0d8f0a26 "
/>
<img width="974" height="530" alt="image"
src="https://github.com/user-attachments/assets/4689390c-0e7f-48ae-acc7-d8e28695452f "
/>
<img width="974" height="530" alt="image"
src="https://github.com/user-attachments/assets/d0aa5217-d0e1-4f41-b663-72888d028a3a "
/>
<img width="974" height="530" alt="image"
src="https://github.com/user-attachments/assets/4fa9ff5b-a874-43d5-812f-6abe1a95a5ac "
/>
<img width="974" height="530" alt="image"
src="https://github.com/user-attachments/assets/2c8199a6-f872-46af-986f-bdf8597248f5 "
/>
<img width="974" height="530" alt="image"
src="https://github.com/user-attachments/assets/5bd9effc-7518-4f96-b2f2-7c547f32f500 "
/>
## Checklist:
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my code
- [x] I have commented on my code, particularly in hard-to-understand
areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream
modules
2026-03-06 12:20:22 +04:00
Sojan Jose
159c810117
feat: Bulk actions for contacts ( #12763 )
...
Introduces APIs and UI for bulk actions in contacts table. The initial
action available will be assign labels
Fixes : #8536 #12253
## Screens
<img width="1350" height="747" alt="Screenshot 2025-10-29 at 4 05 08 PM"
src="https://github.com/user-attachments/assets/0792dff5-0371-4b2e-bdfb-cd32db773402 "
/>
<img width="1345" height="717" alt="Screenshot 2025-10-29 at 4 05 19 PM"
src="https://github.com/user-attachments/assets/ae510404-c6de-4c15-a720-f6d10cdac25b "
/>
---------
Co-authored-by: Muhsin <muhsinkeramam@gmail.com >
Co-authored-by: iamsivin <iamsivin@gmail.com >
Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com >
2025-10-30 15:28:28 +05:30
Sivin Varghese
d908c880d2
chore: Replace Thumbnail with Avatar ( #12119 )
2025-08-11 15:47:17 +05:30
Sivin Varghese
304c938260
fix: Styles issues with conversation card ( #12107 )
...
# Pull Request Template
## Description
This PR includes the following changes:
1. Fixes a couple of UI issues.
2. Moves all styles to inline classes.
3. Migrates the `ConversationCard.vue` component from the Options API to
the Composition API.
## Type of change
- [x] Bug fix (non-breaking change which fixes an issue)
## How Has This Been Tested?
### Screenshots
**Before**
<img width="353" height="550" alt="image"
src="https://github.com/user-attachments/assets/070c9bf1-6077-48d8-832d-79037b794f42 "
/>
**After**
<img width="353" height="541" alt="image"
src="https://github.com/user-attachments/assets/c54bf69c-d175-45cf-a6fe-9c7ab6f66226 "
/>
## Checklist:
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my code
- [ ] I have commented on my code, particularly in hard-to-understand
areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream
modules
2025-08-06 15:28:38 +05:30
Sivin Varghese
24ea968b00
chore: Remove older UI ( #11720 )
2025-07-01 09:43:44 +05:30
Sivin Varghese
e4ea078e52
chore: Update buttons in conversation screens - 2 ( #11134 )
2025-03-21 21:54:54 +05:30
Sivin Varghese
88f3b4de48
chore(v4): Update colors ( #10700 )
2025-01-16 15:27:23 +05:30
Shivam Mishra
c51a458c25
style: apply fixes for eslint issues [cw-3590] ( #10210 )
...
These fixes are all auto generated and can be merged directly
Fixes the following issues
1. Event used on components should be hypenated
2. Attribute orders in components
3. Use `unmounted` instead of `destroyed`
4. Add explicit `emits` declarations for components, autofixed [using
this
script](https://gist.github.com/scmmishra/6f549109b96400006bb69bbde392eddf )
We ignore the top level v-if for now, we will fix it later
2024-10-03 15:02:12 +05:30
Shivam Mishra
b8d0252511
feat: remove usage of .sync and define explicitly emits ( #10209 )
...
References
- https://v3-migration.vuejs.org/breaking-changes/v-model
-
https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html
2024-10-03 12:44:18 +05:30
Shivam Mishra
42f6621afb
feat: Vite + vue 3 💚 ( #10047 )
...
Fixes https://github.com/chatwoot/chatwoot/issues/8436
Fixes https://github.com/chatwoot/chatwoot/issues/9767
Fixes https://github.com/chatwoot/chatwoot/issues/10156
Fixes https://github.com/chatwoot/chatwoot/issues/6031
Fixes https://github.com/chatwoot/chatwoot/issues/5696
Fixes https://github.com/chatwoot/chatwoot/issues/9250
Fixes https://github.com/chatwoot/chatwoot/issues/9762
---------
Co-authored-by: Pranav <pranavrajs@gmail.com >
Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com >
2024-10-02 00:36:30 -07:00
Sivin Varghese
7f8d718da3
feat: Rewrite command bar mixin to a composable ( #10015 )
...
Co-authored-by: Shivam Mishra <scm.mymail@gmail.com >
2024-08-26 15:55:59 +05:30
Sivin Varghese
b4b308336f
feat: Eslint rules ( #9839 )
...
# Pull Request Template
## Description
This PR adds new eslint rules to the code base.
**Error rules**
| Rule name | Type | Files updated |
| ----------------- | --- | - |
| `vue/block-order` | error | ✅ |
| `vue/component-name-in-template-casing` | error | ✅ |
| `vue/component-options-name-casing` | error | ✅ |
| `vue/custom-event-name-casing` | error | ✅ |
| `vue/define-emits-declaration` | error | ✅ |
| `vue/no-unused-properties` | error | ✅ |
| `vue/define-macros-order` | error | ✅ |
| `vue/define-props-declaration` | error | ✅ |
| `vue/match-component-import-name` | error | ✅ |
| `vue/next-tick-style` | error | ✅ |
| `vue/no-bare-strings-in-template` | error | ✅ |
| `vue/no-empty-component-block` | error | ✅ |
| `vue/no-multiple-objects-in-class` | error | ✅ |
| `vue/no-required-prop-with-default` | error | ✅ |
| `vue/no-static-inline-styles` | error | ✅ |
| `vue/no-template-target-blank` | error | ✅ |
| `vue/no-this-in-before-route-enter` | error | ✅ |
| `vue/no-undef-components` | error | ✅ |
| `vue/no-unused-emit-declarations` | error | ✅ |
| `vue/no-unused-refs` | error | ✅ |
| `vue/no-use-v-else-with-v-for` | error | ✅ |
| `vue/no-useless-v-bind` | error | ✅ |
| `vue/no-v-text` | error | ✅ |
| `vue/padding-line-between-blocks` | error | ✅ |
| ~`vue/prefer-prop-type-boolean-first`~ | ~error~ | ❌ (removed this
rule, cause a bug in displaying custom attributes) |
| `vue/prefer-separate-static-class` | error | ✅ |
| `vue/prefer-true-attribute-shorthand` | error | ✅ |
| `vue/require-explicit-slots` | error | ✅ |
| `vue/require-macro-variable-name` | error | ✅ |
**Warn rules**
| Rule name | Type | Files updated |
| ---- | ------------- | ------------- |
| `vue/no-root-v-if` | warn | ❎ |
Fixes https://linear.app/chatwoot/issue/CW-3492/vue-eslint-rules
## Type of change
- [x] New feature (non-breaking change which adds functionality)
## Checklist:
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my code
- [x] I have commented on my code, particularly in hard-to-understand
areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream
modules
---------
Co-authored-by: Fayaz Ahmed <fayazara@gmail.com >
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com >
Co-authored-by: Shivam Mishra <scm.mymail@gmail.com >
Co-authored-by: Pranav <pranav@chatwoot.com >
2024-08-05 14:02:16 +05:30
Fayaz Ahmed
b474929f5e
chore: Replace eventBus with mitt.js [CW-3275] ( #9539 )
...
# Replace the deprecated `eventBus` with mitt.js
## Description
Since eventBus and it's respective methods are deprecated and removed
from all future releases of vue, this was blocking us from migrating.
This PR replaces eventBus with
[mitt](https://github.com/developit/mitt ). I have created a wrapper
mitt.js to simulate the same old event names so it's backwards
compatible, without making a lot of changes.
Fixes # (issue)
## Type of change
Please delete options that are not relevant.
- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality not to work as expected)
- [ ] This change requires a documentation update
## How Has This Been Tested?
1. Made sure all the places we're listening to bus events are working as
expected.
2. Respective specsf or the events from mitt.
## Checklist:
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my code
- [x] I have commented on my code, particularly in hard-to-understand
areas
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [x] Any dependent changes have been merged and published in downstream
modules
2024-05-31 15:50:36 +05:30
Sivin Varghese
5138a0ad32
feat: Adds support for all snooze option in bulk actions ( #9361 )
...
* feat: Add support for bulk snooze until
* feat: Adds support for all snooze option in bulk actions
* chore: Adds comment
* chore: Review fixes
* chore: Minor fix
* chore: Minor fix
* chore: Review fixes
* chore: yarn changes
* fix: terminal waring
* chore: Adds spec
* Update conversationHotKeys.js
---------
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com >
2024-05-09 19:27:31 +05:30
Sivin Varghese
12af2fe026
feat: Remove the usage of clickAway mixin with directive ( #9323 )
2024-04-30 10:35:14 +05:30
Sivin Varghese
dafedddc1a
feat: Remove Foundation in favor of Tailwind ( #8984 )
...
* feat: Remove foundation
* chore: Minor fix
* Minor fix
* Update _forms.scss
* chore: More changes
* chore: Minor fix
* chore: Clean up
* fix: font-weight
* chore: More changes
* chore: Setting page
* chore: Editor fix
* chore: Reports page
* chore: More changes
* chore: Minor changes
* chore: More fixes
* chore: More changes
* chore: More changes
* chore: More changes
* chore: Minor fix
* chore: More changes
* chore: More changes
* chore: More changes
* chore: More changes
* chore: Clean up
* chore: Minor fix
* chore: Clean ups
* chore: Rename basic file
* chore: Remove unused files
* chore: Fix expanded input
* Fix campaign rendering
* chore: Clean up
* chore: More changes
* chore: Remove unused files
* fix: Overflow issue
* chore: Minor fix
* chore: Clean up
* chore: Minor fix
* chore: Remove unused files
* chore: Minor fix
* chore: Minor fix
* fix: autoprefixer start/end value has mixed support
* chore: Minor fix
* chore: Remove unused files
* chore: Minor fix
* chore: Minor fix
* chore: Minor fix
* Add responsive design to label settings
* fix inbox view
* chore: Minor fix
* w-60% to w-2/3
* chore: Fix team
* chore: Fix button
* w-[34%] to w-1/3
* chore: Fix border
* Add support mobile views in team page
* chore: fix snackbar
* chore: clean up
* chore: Clean up
* fix: loading state alignment
* fix: alert styles
* chore: Minor fix
* fix: spacing for agent bot row
* fix: layout
* fix: layout for SLA
* fix: checkbox
* fix: SLA checkbox spacing
* Update inbox settings pages
* fix macros listing page layout
* fix canned responses
* chore: Fix bot page
* chore: fix automation page
* chore: fix agents page
* chore: fix canned response editor
* chore: Fix settings table
* chore: fix settings layout
* chore: Minor fix
* fix: canned response table layou
* fix: layout for table header for webhooks
* fix: webhook row layout
* fix: dashboard app modal layout
* fix: add title to canned response truncated shortcode
* fix: dashboard apps row layuot
* fix: layouts hooks
* fix: body color
* fix: delete action color in portal locales
* fix: text color for campagin title
* fix: success button color
---------
Co-authored-by: Pranav <pranav@chatwoot.com >
Co-authored-by: Vishnu Narayanan <iamwishnu@gmail.com >
Co-authored-by: Shivam Mishra <scm.mymail@gmail.com >
2024-02-28 13:56:28 +05:30
Shivam Mishra
48bf8d08e5
feat: Update dependencies and fix import syntax for Vite migration ( #7959 )
...
Co-authored-by: Pranav Raj S <pranav@chatwoot.com >
2023-09-21 17:55:54 +05:30
Sivin Varghese
40ec0d109a
feat: Dark Mode ( #7471 )
2023-07-21 22:10:25 +05:30
Pranav Raj S
985b3f3bfc
chore: Reset the base font-size to 16px instead of 10px ( #7455 )
...
Co-authored-by: Nithin David Thomas <1277421+nithindavid@users.noreply.github.com >
2023-07-04 03:23:00 +05:30
Sojan Jose
022383d942
chore: Upgrade to Rails 7 ( #6719 )
...
fixes : #6736
2023-05-06 10:44:52 +05:30
Sivin Varghese
0a993978ba
bug: Bulk actions Assign agent is not working ( #6568 )
2023-03-01 10:53:40 +05:30
Sivin Varghese
92d0398744
chore: Refactor conversation info panel for RTL ( #6526 )
...
* chore: Refactor conversation info panel for RTL
* chore: Adds comments
* chore: Settings header icon fix
* chore: Toggle layout switch
* chore: Border fix in chat list
2023-02-24 19:20:17 +05:30
Sivin Varghese
60f953cd27
chore: Refactor reports for RTL ( #6517 )
...
* Refactor reports
* fix: spacing issues and minor fixes
---------
Co-authored-by: Nithin David <1277421+nithindavid@users.noreply.github.com >
2023-02-23 19:50:49 +05:30
Fayaz Ahmed
33aacb3401
Add team option in bulk actions ( #5885 )
2022-11-18 14:44:36 +05:30
Nithin David Thomas
73f5595762
chore: Sync colors from dashboard to tailwind config ( #5656 )
2022-10-17 13:13:02 -07:00
Tejaswini Chile
7419e413f4
fix: Added "None" option in bulk actions assignment menu ( #5585 )
...
Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com >
Co-authored-by: Pranav Raj S <pranav@chatwoot.com >
2022-10-11 13:44:35 -07:00
Fayaz Ahmed
263b8240d3
fix: Add a fix for minor UI / a11y issues ( #4905 )
2022-06-24 23:12:53 +05:30
Fayaz Ahmed
9c721d279e
fix: Truncate overflowing labels in bulk actions selector ( #4898 )
2022-06-20 22:32:52 +05:30
Fayaz Ahmed
3fa34991d0
fix: Display missing agent avatar in bulk actions and reports ( #4893 )
2022-06-20 16:04:26 +05:30
Fayaz Ahmed
205d42e978
fix: Bulk actions agent loading ( #4874 )
2022-06-16 11:02:32 +05:30
Fayaz Ahmed
067c905329
feat: Allow agents to bulk assign labels to conversations ( #4854 )
...
Co-authored-by: Pranav Raj S <pranav@chatwoot.com >
2022-06-15 14:18:05 +05:30
Fayaz Ahmed
2198930185
feat: Add snooze, reopen option to bulk actions ( #4831 )
...
Co-authored-by: Pranav Raj S <pranav@chatwoot.com >
2022-06-13 12:14:27 +05:30
Fayaz Ahmed
79a525aa62
feat: Add Bulk actions to conversations ( #4647 )
...
Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com >
Co-authored-by: Pranav Raj S <pranav@chatwoot.com >
2022-06-03 11:12:22 +05:30