Skip to content

Commit 3c77332

Browse files
Merge branch 'master' into feat-remove-event
2 parents 2f08658 + fd6ee5f commit 3c77332

25 files changed

Lines changed: 319 additions & 69 deletions

.env.sample

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ VITE_API_AUTH_GOOGLE=http://localhost:3000/auth/google
88
# Frontend errors tracking Integraton Token
99
VITE_HAWK_TOKEN=
1010

11-
# Public Id for Cloudpayments account
12-
VITE_CLOUDPAYMENTS_PUBLIC_ID=test_api_00000000000000000000001
13-
1411
# Id of free plan
1512
VITE_FREE_PLAN_ID=5f47f031ff71510040f433c1
1613

.github/workflows/build-and-push-docker-image.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ jobs:
4343
with:
4444
envkey_VITE_HAWK_TOKEN: ${{ secrets.HAWK_TOKEN_PROD }}
4545
envkey_VITE_AMPLITUDE_TOKEN: ${{ secrets.AMPLITUDE_TOKEN_PROD }}
46-
envkey_VITE_CLOUDPAYMENTS_PUBLIC_ID: ${{ secrets.CP_PUBLIC_ID_STAGE }}
4746
envkey_VITE_API_ENDPOINT: "https://api-staging.hawk.so"
4847
envkey_VITE_FREE_PLAN_ID: ${{ secrets.FREE_PLAN_ID }}
4948
envkey_VITE_SSO_SP_ENTITY_ID: ${{ secrets.SSO_SP_ENTITY_ID_STAGE }}
@@ -58,21 +57,21 @@ jobs:
5857
with:
5958
envkey_VITE_HAWK_TOKEN: ${{ secrets.HAWK_TOKEN_PROD }}
6059
envkey_VITE_AMPLITUDE_TOKEN: ${{ secrets.AMPLITUDE_TOKEN_PROD }}
61-
envkey_VITE_CLOUDPAYMENTS_PUBLIC_ID: ${{ secrets.CP_PUBLIC_ID_PROD }}
6260
envkey_VITE_API_ENDPOINT: "https://api.hawk.so"
6361
envkey_VITE_FREE_PLAN_ID: ${{ secrets.FREE_PLAN_ID }}
6462
envkey_VITE_SSO_SP_ENTITY_ID: ${{ secrets.SSO_SP_ENTITY_ID }}
63+
# envkey_VITE_CLOUDPAYMENTS_PUBLIC_ID: ${{ secrets.CP_PUBLIC_ID_PROD }}
6564

6665
- name: Make prod-ru envfile
6766
if: github.ref_name == 'prod-ru'
6867
uses: SpicyPizza/create-envfile@v1
6968
with:
7069
envkey_VITE_HAWK_TOKEN: ${{ secrets.HAWK_TOKEN_PROD }}
7170
envkey_VITE_AMPLITUDE_TOKEN: ${{ secrets.AMPLITUDE_TOKEN_PROD }}
72-
envkey_VITE_CLOUDPAYMENTS_PUBLIC_ID: ${{ secrets.CP_PUBLIC_ID_PROD }}
7371
envkey_VITE_API_ENDPOINT: "https://api.hawk-tracker.ru"
7472
envkey_VITE_FREE_PLAN_ID: ${{ secrets.FREE_PLAN_ID }}
7573
envkey_VITE_SSO_SP_ENTITY_ID: ${{ secrets.SSO_SP_ENTITY_ID }}
74+
# envkey_VITE_CLOUDPAYMENTS_PUBLIC_ID: ${{ secrets.CP_PUBLIC_ID_PROD }}
7675

7776
- name: Set up Docker Buildx
7877
uses: docker/setup-buildx-action@v3

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "hawk.so",
3-
"version": "1.1.4",
3+
"version": "1.1.7",
44
"private": true,
55
"scripts": {
66
"dev": "vite",
@@ -18,7 +18,7 @@
1818
},
1919
"dependencies": {
2020
"@codexteam/ui": "0.2.0-rc.4",
21-
"@hawk.so/javascript": "3.2.15",
21+
"@hawk.so/javascript": "3.2.21",
2222
"@hawk.so/types": "^0.5.9",
2323
"axios": "^1.12.2",
2424
"codex-notifier": "^1.1.2",

src/api/billing/queries.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ export const QUERY_COMPOSE_PAYMENT = `
8181
currency
8282
checksum
8383
nextPaymentDate
84+
cloudPaymentsPublicId
8485
}
8586
}
8687
`;

src/api/events/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,16 @@ export async function getEvent(projectId: string, eventId: string, originalEvent
5353
* @param filters - filters for daily events
5454
* @param search - search string for daily events
5555
* @param release - release identifier to filter events
56+
* @param assignee - user id to filter events by assignee
5657
*/
5758
export async function fetchDailyEventsPortion(
5859
projectId: string,
5960
nextCursor: DailyEventsCursor | null = null,
6061
sort = EventsSortOrder.ByDate,
6162
filters: EventsFilters = {},
6263
search = '',
63-
release?: string
64+
release?: string,
65+
assignee?: string
6466
): Promise<DailyEventsPortion> {
6567
const response = await api.call(QUERY_PROJECT_DAILY_EVENTS, {
6668
projectId,
@@ -69,6 +71,7 @@ export async function fetchDailyEventsPortion(
6971
filters,
7072
search,
7173
release,
74+
assignee,
7275
}, undefined, {
7376
/**
7477
* This request calls on the app start, so we don't want to break app if something goes wrong

src/api/events/queries.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@ export const QUERY_PROJECT_DAILY_EVENTS = `
2424
$filters: EventsFiltersInput
2525
$search: String
2626
$release: String
27+
$assignee: ID
2728
) {
2829
project(projectId: $projectId) {
29-
dailyEventsPortion(sort: $sort, filters: $filters, search: $search, release: $release, nextCursor: $cursor) {
30+
dailyEventsPortion(sort: $sort, filters: $filters, search: $search, release: $release, assignee: $assignee, nextCursor: $cursor) {
3031
nextCursor {
3132
groupingTimestampBoundary
3233
sortValueBoundary

src/components/aside/ProjectsMenuItem.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
</div>
3838
</div>
3939
<Badge
40-
v-if="project.unreadCount > 0"
40+
v-if="project.unreadCount > 0 && project.id !== currentProjectId"
4141
:content="project.unreadCount"
4242
class="project-menu-item__events-number"
4343
/>

src/components/forms/SearchField.vue

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@
77
class="form-search-field__search-icon"
88
symbol="search"
99
/>
10-
<input
11-
ref="input"
12-
class="form-search-field__input"
13-
type="text"
14-
:placeholder="placeholderText"
15-
:value="modelValue"
16-
@input="onChange"
17-
>
10+
<div class="form-search-field__input-wrap">
11+
<input
12+
ref="input"
13+
class="form-search-field__input"
14+
type="text"
15+
:placeholder="placeholderText"
16+
:value="modelValue"
17+
@input="onChange"
18+
>
19+
</div>
20+
<slot name="suffix" />
1821
<div
1922
v-show="inputValue"
2023
class="form-search-field__clear-icon-wrapper"
@@ -145,13 +148,20 @@ export default {
145148
146149
}
147150
151+
&__input-wrap {
152+
flex: 1;
153+
min-width: 0;
154+
}
155+
148156
&__search-icon {
157+
flex-shrink: 0;
149158
width: 14px;
150159
height: 14px;
151160
color: var(--color-text-second);
152161
}
153162
154163
&__clear-icon-wrapper {
164+
flex-shrink: 0;
155165
display: flex;
156166
align-items: center;
157167
justify-content: center;

src/components/modals/ChooseTariffPlanPopup.vue

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,20 @@ export default defineComponent({
144144
*/
145145
async onContinue(): Promise<void> {
146146
if (this.selectedPlan.monthlyCharge === 0) {
147+
/**
148+
* Disable free plan reset:
149+
* if workspace is already on free plan, do not allow switching to free again
150+
*/
151+
if (this.workspace.plan.monthlyCharge === 0) {
152+
notifier.show({
153+
message: this.$t('workspaces.chooseTariffPlanDialog.freeResetNotAllowed') as string,
154+
style: 'error',
155+
time: 5000,
156+
});
157+
158+
return;
159+
}
160+
147161
this.$confirm.open({
148162
actionType: ActionType.SUBMIT,
149163
description: this.$t('workspaces.chooseTariffPlanDialog.confirmSetToFreePlanDescription').toString(),

src/components/modals/PaymentDetailsDialog.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,7 @@ export default defineComponent({
611611
612612
widget.pay(method,
613613
{
614-
publicId: import.meta.env.VITE_CLOUDPAYMENTS_PUBLIC_ID,
614+
publicId: data.cloudPaymentsPublicId,
615615
description: this.$t(titleKey, {
616616
tariffPlanName: this.plan.name,
617617
workspaceName: this.workspace.name,

0 commit comments

Comments
 (0)