1616 height =" 16"
1717 @click =" deleteFromLimitList(limit.domain)"
1818 />
19+ <img
20+ src =" ../assets/icons/edit.svg"
21+ height =" 16"
22+ @click =" editItemFromLimitList(limit.domain, limit.time)"
23+ />
1924 {{ limit.domain }}
2025 <p class =" time-value" >{{ getTimeForLimit(limit.time) }}</p >
2126 </div >
2429 <div class =" limits-time-block mt-20" >
2530 <input
2631 type =" text"
32+ :disabled =" isEdit"
2733 class =" d-inline-block"
2834 placeholder =" Enter website name..."
2935 v-model =" newWebsiteForLimitList"
3238 <input
3339 type =" button"
3440 class =" d-inline-block small-btn"
35- value =" Add Website"
41+ : value =" !isEdit ? ' Add Website' : 'Save' "
3642 :disabled =" newWebsiteForLimitList == null || newWebsiteForLimitList == '' || time == null"
37- @click =" addToLimitList()"
43+ @click =" isEdit ? editItem() : addToLimitList()"
3844 />
3945 </div >
4046 </div >
@@ -54,7 +60,7 @@ import { StorageParams } from '../storage/storage-params';
5460import { isDomainEquals } from ' ../utils/common' ;
5561import { extractHostname } from ' ../compositions/extract-hostname' ;
5662import { Restriction } from ' ../entity/restriction' ;
57- import { convertSecondsToHHMM } from ' ../utils/converter' ;
63+ import { convertHHMMToSeconds , convertSecondsToHHMM } from ' ../utils/converter' ;
5864
5965const notification = useNotification ();
6066
@@ -66,6 +72,7 @@ const time = ref({
6672 minutes: 30 ,
6773});
6874const newWebsiteForLimitList = ref <string >();
75+ const isEdit = ref <boolean >();
6976
7077onMounted (async () => {
7178 limitList .value = Object .values (
@@ -104,6 +111,26 @@ function deleteFromLimitList(url: string) {
104111 save (limitList .value );
105112}
106113
114+ function editItemFromLimitList(url : string , timeForUrl : number ) {
115+ isEdit .value = true ;
116+ newWebsiteForLimitList .value = url ;
117+ const timeObj = convertSecondsToHHMM (timeForUrl );
118+ time .value .hours = timeObj .hours ;
119+ time .value .minutes = timeObj .minutes ;
120+ }
121+
122+ function editItem() {
123+ const existingItem = limitList .value ?.find (x =>
124+ isDomainEquals (extractHostname (x .domain ), extractHostname (newWebsiteForLimitList .value ! )),
125+ );
126+ if (existingItem != undefined ) {
127+ existingItem .time = convertHHMMToSeconds (time .value .hours , time .value .minutes );
128+ save (limitList .value );
129+ newWebsiteForLimitList .value = ' ' ;
130+ isEdit .value = false ;
131+ }
132+ }
133+
107134async function save(value : any ) {
108135 if (value != undefined ) await settingsStorage .saveValue (StorageParams .RESTRICTION_LIST , value );
109136}
0 commit comments