forked from potsda.mn/mobilizon
Merge remote-tracking branch 'origin/main'
nix run .#update
This commit is contained in:
commit
733d58a49b
|
@ -1,2 +1,2 @@
|
||||||
elixir 1.14.4-otp-25
|
elixir 1.15.4-otp-26
|
||||||
erlang 25.3.1
|
erlang 26.0.2
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
"@vue-a11y/announcer": "^2.1.0",
|
"@vue-a11y/announcer": "^2.1.0",
|
||||||
"@vue-a11y/skip-to": "^2.1.2",
|
"@vue-a11y/skip-to": "^2.1.2",
|
||||||
"@vue-leaflet/vue-leaflet": "^0.10.1",
|
"@vue-leaflet/vue-leaflet": "^0.10.1",
|
||||||
"@vue/apollo-composable": "^4.0.0-beta.5",
|
"@vue/apollo-composable": "^4.0.0-beta.8",
|
||||||
"@vue/compiler-sfc": "^3.2.37",
|
"@vue/compiler-sfc": "^3.2.37",
|
||||||
"@vueuse/core": "^10.0.2",
|
"@vueuse/core": "^10.0.2",
|
||||||
"@vueuse/head": "^1.0",
|
"@vueuse/head": "^1.0",
|
||||||
|
@ -67,7 +67,7 @@
|
||||||
"blurhash": "^2.0.0",
|
"blurhash": "^2.0.0",
|
||||||
"date-fns": "^2.16.0",
|
"date-fns": "^2.16.0",
|
||||||
"date-fns-tz": "^2.0.0",
|
"date-fns-tz": "^2.0.0",
|
||||||
"floating-vue": "^2.0.0-beta.17",
|
"floating-vue": "^2.0.0-beta.24",
|
||||||
"graphql": "^15.8.0",
|
"graphql": "^15.8.0",
|
||||||
"graphql-tag": "^2.10.3",
|
"graphql-tag": "^2.10.3",
|
||||||
"hammerjs": "^2.0.8",
|
"hammerjs": "^2.0.8",
|
||||||
|
@ -111,15 +111,15 @@
|
||||||
"@types/phoenix": "^1.5.2",
|
"@types/phoenix": "^1.5.2",
|
||||||
"@types/sanitize-html": "^2.5.0",
|
"@types/sanitize-html": "^2.5.0",
|
||||||
"@vitejs/plugin-vue": "^4.0.0",
|
"@vitejs/plugin-vue": "^4.0.0",
|
||||||
"@vitest/coverage-c8": "^0.32.2",
|
"@vitest/coverage-v8": "^0.34.1",
|
||||||
"@vitest/ui": "^0.32.2",
|
"@vitest/ui": "^0.34.1",
|
||||||
"@vue/eslint-config-prettier": "^7.0.0",
|
"@vue/eslint-config-prettier": "^8.0.0",
|
||||||
"@vue/eslint-config-typescript": "^11.0.0",
|
"@vue/eslint-config-typescript": "^11.0.0",
|
||||||
"@vue/test-utils": "^2.0.2",
|
"@vue/test-utils": "^2.0.2",
|
||||||
"eslint": "^8.21.0",
|
"eslint": "^8.21.0",
|
||||||
"eslint-config-prettier": "^8.3.0",
|
"eslint-config-prettier": "^8.3.0",
|
||||||
"eslint-plugin-import": "^2.20.2",
|
"eslint-plugin-import": "^2.20.2",
|
||||||
"eslint-plugin-prettier": "^4.0.0",
|
"eslint-plugin-prettier": "^5.0.0",
|
||||||
"eslint-plugin-vue": "^9.3.0",
|
"eslint-plugin-vue": "^9.3.0",
|
||||||
"flush-promises": "^1.0.2",
|
"flush-promises": "^1.0.2",
|
||||||
"histoire": "^0.16.1",
|
"histoire": "^0.16.1",
|
||||||
|
@ -127,14 +127,14 @@
|
||||||
"jsdom": "^22.0.0",
|
"jsdom": "^22.0.0",
|
||||||
"lint-staged": "^13.2.2",
|
"lint-staged": "^13.2.2",
|
||||||
"mock-apollo-client": "^1.1.0",
|
"mock-apollo-client": "^1.1.0",
|
||||||
"prettier": "^2.2.1",
|
"prettier": "^3.0.0",
|
||||||
"prettier-eslint": "^15.0.1",
|
"prettier-eslint": "^15.0.1",
|
||||||
"rollup-plugin-visualizer": "^5.7.1",
|
"rollup-plugin-visualizer": "^5.7.1",
|
||||||
"sass": "^1.34.1",
|
"sass": "^1.34.1",
|
||||||
"typescript": "~5.1.3",
|
"typescript": "~5.1.3",
|
||||||
"vite": "^4.0.4",
|
"vite": "^4.0.4",
|
||||||
"vite-plugin-pwa": "^0.16.4",
|
"vite-plugin-pwa": "^0.16.4",
|
||||||
"vitest": "^0.32.2",
|
"vitest": "^0.34.1",
|
||||||
"vue-i18n-extract": "^2.0.4"
|
"vue-i18n-extract": "^2.0.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,12 +24,15 @@ type schemaType = {
|
||||||
|
|
||||||
// eslint-disable-next-line no-underscore-dangle
|
// eslint-disable-next-line no-underscore-dangle
|
||||||
const types = introspectionQueryResultData.__schema.types as schemaType[];
|
const types = introspectionQueryResultData.__schema.types as schemaType[];
|
||||||
export const possibleTypes = types.reduce((acc, type) => {
|
export const possibleTypes = types.reduce(
|
||||||
|
(acc, type) => {
|
||||||
if (type.kind === "INTERFACE") {
|
if (type.kind === "INTERFACE") {
|
||||||
acc[type.name] = type.possibleTypes.map(({ name }) => name);
|
acc[type.name] = type.possibleTypes.map(({ name }) => name);
|
||||||
}
|
}
|
||||||
return acc;
|
return acc;
|
||||||
}, {} as Record<string, string[]>);
|
},
|
||||||
|
{} as Record<string, string[]>
|
||||||
|
);
|
||||||
|
|
||||||
const replaceMergePolicy = <TExisting = any, TIncoming = any>(
|
const replaceMergePolicy = <TExisting = any, TIncoming = any>(
|
||||||
_existing: TExisting,
|
_existing: TExisting,
|
||||||
|
|
|
@ -62,34 +62,40 @@ const props = defineProps<{
|
||||||
activity: IActivity;
|
activity: IActivity;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const isAuthorCurrentActor = useIsActivityAuthorCurrentActor()(props.activity);
|
const useIsActivityAuthorCurrentActorFct = useIsActivityAuthorCurrentActor();
|
||||||
|
const useActivitySubjectParamsFct = useActivitySubjectParams();
|
||||||
|
|
||||||
const subjectParams = useActivitySubjectParams()(props.activity);
|
const isAuthorCurrentActor = computed(() =>
|
||||||
|
useIsActivityAuthorCurrentActorFct(props.activity)
|
||||||
|
);
|
||||||
|
const subjectParams = computed(() =>
|
||||||
|
useActivitySubjectParamsFct(props.activity)
|
||||||
|
);
|
||||||
|
|
||||||
const translation = computed((): string | undefined => {
|
const translation = computed((): string | undefined => {
|
||||||
switch (props.activity.subject) {
|
switch (props.activity.subject) {
|
||||||
case ActivityDiscussionSubject.DISCUSSION_CREATED:
|
case ActivityDiscussionSubject.DISCUSSION_CREATED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You created the discussion {discussion}.";
|
return "You created the discussion {discussion}.";
|
||||||
}
|
}
|
||||||
return "{profile} created the discussion {discussion}.";
|
return "{profile} created the discussion {discussion}.";
|
||||||
case ActivityDiscussionSubject.DISCUSSION_REPLIED:
|
case ActivityDiscussionSubject.DISCUSSION_REPLIED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You replied to the discussion {discussion}.";
|
return "You replied to the discussion {discussion}.";
|
||||||
}
|
}
|
||||||
return "{profile} replied to the discussion {discussion}.";
|
return "{profile} replied to the discussion {discussion}.";
|
||||||
case ActivityDiscussionSubject.DISCUSSION_RENAMED:
|
case ActivityDiscussionSubject.DISCUSSION_RENAMED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You renamed the discussion from {old_discussion} to {discussion}.";
|
return "You renamed the discussion from {old_discussion} to {discussion}.";
|
||||||
}
|
}
|
||||||
return "{profile} renamed the discussion from {old_discussion} to {discussion}.";
|
return "{profile} renamed the discussion from {old_discussion} to {discussion}.";
|
||||||
case ActivityDiscussionSubject.DISCUSSION_ARCHIVED:
|
case ActivityDiscussionSubject.DISCUSSION_ARCHIVED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You archived the discussion {discussion}.";
|
return "You archived the discussion {discussion}.";
|
||||||
}
|
}
|
||||||
return "{profile} archived the discussion {discussion}.";
|
return "{profile} archived the discussion {discussion}.";
|
||||||
case ActivityDiscussionSubject.DISCUSSION_DELETED:
|
case ActivityDiscussionSubject.DISCUSSION_DELETED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You deleted the discussion {discussion}.";
|
return "You deleted the discussion {discussion}.";
|
||||||
}
|
}
|
||||||
return "{profile} deleted the discussion {discussion}.";
|
return "{profile} deleted the discussion {discussion}.";
|
||||||
|
|
|
@ -52,35 +52,41 @@ const props = defineProps<{
|
||||||
activity: IActivity;
|
activity: IActivity;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const isAuthorCurrentActor = useIsActivityAuthorCurrentActor()(props.activity);
|
const useIsActivityAuthorCurrentActorFct = useIsActivityAuthorCurrentActor();
|
||||||
|
const useActivitySubjectParamsFct = useActivitySubjectParams();
|
||||||
|
|
||||||
const subjectParams = useActivitySubjectParams()(props.activity);
|
const isAuthorCurrentActor = computed(() =>
|
||||||
|
useIsActivityAuthorCurrentActorFct(props.activity)
|
||||||
|
);
|
||||||
|
const subjectParams = computed(() =>
|
||||||
|
useActivitySubjectParamsFct(props.activity)
|
||||||
|
);
|
||||||
|
|
||||||
const translation = computed((): string | undefined => {
|
const translation = computed((): string | undefined => {
|
||||||
switch (props.activity.subject) {
|
switch (props.activity.subject) {
|
||||||
case ActivityEventSubject.EVENT_CREATED:
|
case ActivityEventSubject.EVENT_CREATED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You created the event {event}.";
|
return "You created the event {event}.";
|
||||||
}
|
}
|
||||||
return "The event {event} was created by {profile}.";
|
return "The event {event} was created by {profile}.";
|
||||||
case ActivityEventSubject.EVENT_UPDATED:
|
case ActivityEventSubject.EVENT_UPDATED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You updated the event {event}.";
|
return "You updated the event {event}.";
|
||||||
}
|
}
|
||||||
return "The event {event} was updated by {profile}.";
|
return "The event {event} was updated by {profile}.";
|
||||||
case ActivityEventSubject.EVENT_DELETED:
|
case ActivityEventSubject.EVENT_DELETED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You deleted the event {event}.";
|
return "You deleted the event {event}.";
|
||||||
}
|
}
|
||||||
return "The event {event} was deleted by {profile}.";
|
return "The event {event} was deleted by {profile}.";
|
||||||
case ActivityEventCommentSubject.COMMENT_POSTED:
|
case ActivityEventCommentSubject.COMMENT_POSTED:
|
||||||
if (subjectParams.comment_reply_to) {
|
if (subjectParams.value.comment_reply_to) {
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You replied to a comment on the event {event}.";
|
return "You replied to a comment on the event {event}.";
|
||||||
}
|
}
|
||||||
return "{profile} replied to a comment on the event {event}.";
|
return "{profile} replied to a comment on the event {event}.";
|
||||||
}
|
}
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You posted a comment on the event {event}.";
|
return "You posted a comment on the event {event}.";
|
||||||
}
|
}
|
||||||
return "{profile} posted a comment on the event {event}.";
|
return "{profile} posted a comment on the event {event}.";
|
||||||
|
|
|
@ -45,7 +45,11 @@
|
||||||
v-if="activity.object"
|
v-if="activity.object"
|
||||||
:to="{
|
:to="{
|
||||||
name: RouteName.GROUP,
|
name: RouteName.GROUP,
|
||||||
params: { preferredUsername: usernameWithDomain(activity.object as IActor) },
|
params: {
|
||||||
|
preferredUsername: usernameWithDomain(
|
||||||
|
activity.object as IActor
|
||||||
|
),
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
>{{ subjectParams.group_name }}</router-link
|
>{{ subjectParams.group_name }}</router-link
|
||||||
>
|
>
|
||||||
|
@ -78,19 +82,25 @@ const props = defineProps<{
|
||||||
activity: IActivity;
|
activity: IActivity;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const isAuthorCurrentActor = useIsActivityAuthorCurrentActor()(props.activity);
|
const useIsActivityAuthorCurrentActorFct = useIsActivityAuthorCurrentActor();
|
||||||
|
const useActivitySubjectParamsFct = useActivitySubjectParams();
|
||||||
|
|
||||||
const subjectParams = useActivitySubjectParams()(props.activity);
|
const isAuthorCurrentActor = computed(() =>
|
||||||
|
useIsActivityAuthorCurrentActorFct(props.activity)
|
||||||
|
);
|
||||||
|
const subjectParams = computed(() =>
|
||||||
|
useActivitySubjectParamsFct(props.activity)
|
||||||
|
);
|
||||||
|
|
||||||
const translation = computed((): string | undefined => {
|
const translation = computed((): string | undefined => {
|
||||||
switch (props.activity.subject) {
|
switch (props.activity.subject) {
|
||||||
case ActivityGroupSubject.GROUP_CREATED:
|
case ActivityGroupSubject.GROUP_CREATED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You created the group {group}.";
|
return "You created the group {group}.";
|
||||||
}
|
}
|
||||||
return "{profile} created the group {group}.";
|
return "{profile} created the group {group}.";
|
||||||
case ActivityGroupSubject.GROUP_UPDATED:
|
case ActivityGroupSubject.GROUP_UPDATED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You updated the group {group}.";
|
return "You updated the group {group}.";
|
||||||
}
|
}
|
||||||
return "{profile} updated the group {group}.";
|
return "{profile} updated the group {group}.";
|
||||||
|
@ -114,8 +124,8 @@ const group = computed(() => props.activity.object as IGroup);
|
||||||
|
|
||||||
const details = computed((): string[] => {
|
const details = computed((): string[] => {
|
||||||
const localDetails = [];
|
const localDetails = [];
|
||||||
const changes = subjectParams.group_changes.split(",");
|
const changes = subjectParams.value.group_changes.split(",");
|
||||||
if (changes.includes("name") && subjectParams.old_group_name) {
|
if (changes.includes("name") && subjectParams.value.old_group_name) {
|
||||||
localDetails.push("{old_group_name} was renamed to {group}.");
|
localDetails.push("{old_group_name} was renamed to {group}.");
|
||||||
}
|
}
|
||||||
if (changes.includes("visibility") && group.value.visibility) {
|
if (changes.includes("visibility") && group.value.visibility) {
|
||||||
|
|
|
@ -51,58 +51,63 @@ const props = defineProps<{
|
||||||
activity: IActivity;
|
activity: IActivity;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const isAuthorCurrentActor = useIsActivityAuthorCurrentActor()(props.activity);
|
const isActivityAuthorCurrentActorFct = useIsActivityAuthorCurrentActor();
|
||||||
|
const activitySubjectParamsFct = useActivitySubjectParams();
|
||||||
|
const isActivityObjectCurrentActor = useIsActivityObjectCurrentActor();
|
||||||
|
|
||||||
const subjectParams = useActivitySubjectParams()(props.activity);
|
const isAuthorCurrentActor = computed(() =>
|
||||||
|
isActivityAuthorCurrentActorFct(props.activity)
|
||||||
|
);
|
||||||
|
const subjectParams = computed(() => activitySubjectParamsFct(props.activity));
|
||||||
const member = computed(() => props.activity.object as IMember);
|
const member = computed(() => props.activity.object as IMember);
|
||||||
|
|
||||||
const isObjectMemberCurrentActor = useIsActivityObjectCurrentActor()(
|
const isObjectMemberCurrentActor = computed(() =>
|
||||||
props.activity
|
isActivityObjectCurrentActor(props.activity)
|
||||||
);
|
);
|
||||||
|
|
||||||
const translation = computed((): string | undefined => {
|
const translation = computed((): string | undefined => {
|
||||||
switch (props.activity.subject) {
|
switch (props.activity.subject) {
|
||||||
case ActivityMemberSubject.MEMBER_REQUEST:
|
case ActivityMemberSubject.MEMBER_REQUEST:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You requested to join the group.";
|
return "You requested to join the group.";
|
||||||
}
|
}
|
||||||
return "{member} requested to join the group.";
|
return "{member} requested to join the group.";
|
||||||
case ActivityMemberSubject.MEMBER_INVITED:
|
case ActivityMemberSubject.MEMBER_INVITED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You invited {member}.";
|
return "You invited {member}.";
|
||||||
}
|
}
|
||||||
return "{member} was invited by {profile}.";
|
return "{member} was invited by {profile}.";
|
||||||
case ActivityMemberSubject.MEMBER_ADDED:
|
case ActivityMemberSubject.MEMBER_ADDED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You added the member {member}.";
|
return "You added the member {member}.";
|
||||||
}
|
}
|
||||||
return "{profile} added the member {member}.";
|
return "{profile} added the member {member}.";
|
||||||
case ActivityMemberSubject.MEMBER_APPROVED:
|
case ActivityMemberSubject.MEMBER_APPROVED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You approved {member}'s membership.";
|
return "You approved {member}'s membership.";
|
||||||
}
|
}
|
||||||
if (isObjectMemberCurrentActor) {
|
if (isObjectMemberCurrentActor.value) {
|
||||||
return "Your membership was approved by {profile}.";
|
return "Your membership was approved by {profile}.";
|
||||||
}
|
}
|
||||||
return "{profile} approved {member}'s membership.";
|
return "{profile} approved {member}'s membership.";
|
||||||
case ActivityMemberSubject.MEMBER_JOINED:
|
case ActivityMemberSubject.MEMBER_JOINED:
|
||||||
return "{member} joined the group.";
|
return "{member} joined the group.";
|
||||||
case ActivityMemberSubject.MEMBER_UPDATED:
|
case ActivityMemberSubject.MEMBER_UPDATED:
|
||||||
if (subjectParams.member_role && subjectParams.old_role) {
|
if (subjectParams.value.member_role && subjectParams.value.old_role) {
|
||||||
return roleUpdate.value;
|
return roleUpdate.value;
|
||||||
}
|
}
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You updated the member {member}.";
|
return "You updated the member {member}.";
|
||||||
}
|
}
|
||||||
return "{profile} updated the member {member}.";
|
return "{profile} updated the member {member}.";
|
||||||
case ActivityMemberSubject.MEMBER_REMOVED:
|
case ActivityMemberSubject.MEMBER_REMOVED:
|
||||||
if (subjectParams.member_role === MemberRole.NOT_APPROVED) {
|
if (subjectParams.value.member_role === MemberRole.NOT_APPROVED) {
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You rejected {member}'s membership request.";
|
return "You rejected {member}'s membership request.";
|
||||||
}
|
}
|
||||||
return "{profile} rejected {member}'s membership request.";
|
return "{profile} rejected {member}'s membership request.";
|
||||||
}
|
}
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You excluded member {member}.";
|
return "You excluded member {member}.";
|
||||||
}
|
}
|
||||||
return "{profile} excluded member {member}.";
|
return "{profile} excluded member {member}.";
|
||||||
|
@ -111,7 +116,7 @@ const translation = computed((): string | undefined => {
|
||||||
case ActivityMemberSubject.MEMBER_REJECTED_INVITATION:
|
case ActivityMemberSubject.MEMBER_REJECTED_INVITATION:
|
||||||
return "{member} rejected the invitation to join the group.";
|
return "{member} rejected the invitation to join the group.";
|
||||||
case ActivityMemberSubject.MEMBER_ACCEPTED_INVITATION:
|
case ActivityMemberSubject.MEMBER_ACCEPTED_INVITATION:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You accepted the invitation to join the group.";
|
return "You accepted the invitation to join the group.";
|
||||||
}
|
}
|
||||||
return "{member} accepted the invitation to join the group.";
|
return "{member} accepted the invitation to join the group.";
|
||||||
|
@ -159,69 +164,69 @@ const iconColor = computed((): string | undefined => {
|
||||||
|
|
||||||
const roleUpdate = computed((): string | undefined => {
|
const roleUpdate = computed((): string | undefined => {
|
||||||
if (
|
if (
|
||||||
Object.keys(MEMBER_ROLE_VALUE).includes(subjectParams.member_role) &&
|
Object.keys(MEMBER_ROLE_VALUE).includes(subjectParams.value.member_role) &&
|
||||||
Object.keys(MEMBER_ROLE_VALUE).includes(subjectParams.old_role)
|
Object.keys(MEMBER_ROLE_VALUE).includes(subjectParams.value.old_role)
|
||||||
) {
|
) {
|
||||||
if (
|
if (
|
||||||
MEMBER_ROLE_VALUE[subjectParams.member_role] >
|
MEMBER_ROLE_VALUE[subjectParams.value.member_role] >
|
||||||
MEMBER_ROLE_VALUE[subjectParams.old_role]
|
MEMBER_ROLE_VALUE[subjectParams.value.old_role]
|
||||||
) {
|
) {
|
||||||
switch (subjectParams.member_role) {
|
switch (subjectParams.value.member_role) {
|
||||||
case MemberRole.MODERATOR:
|
case MemberRole.MODERATOR:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You promoted {member} to moderator.";
|
return "You promoted {member} to moderator.";
|
||||||
}
|
}
|
||||||
if (isObjectMemberCurrentActor) {
|
if (isObjectMemberCurrentActor.value) {
|
||||||
return "You were promoted to moderator by {profile}.";
|
return "You were promoted to moderator by {profile}.";
|
||||||
}
|
}
|
||||||
return "{profile} promoted {member} to moderator.";
|
return "{profile} promoted {member} to moderator.";
|
||||||
case MemberRole.ADMINISTRATOR:
|
case MemberRole.ADMINISTRATOR:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You promoted {member} to administrator.";
|
return "You promoted {member} to administrator.";
|
||||||
}
|
}
|
||||||
if (isObjectMemberCurrentActor) {
|
if (isObjectMemberCurrentActor.value) {
|
||||||
return "You were promoted to administrator by {profile}.";
|
return "You were promoted to administrator by {profile}.";
|
||||||
}
|
}
|
||||||
return "{profile} promoted {member} to administrator.";
|
return "{profile} promoted {member} to administrator.";
|
||||||
default:
|
default:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You promoted the member {member} to an unknown role.";
|
return "You promoted the member {member} to an unknown role.";
|
||||||
}
|
}
|
||||||
if (isObjectMemberCurrentActor) {
|
if (isObjectMemberCurrentActor.value) {
|
||||||
return "You were promoted to an unknown role by {profile}.";
|
return "You were promoted to an unknown role by {profile}.";
|
||||||
}
|
}
|
||||||
return "{profile} promoted {member} to an unknown role.";
|
return "{profile} promoted {member} to an unknown role.";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (subjectParams.member_role) {
|
switch (subjectParams.value.member_role) {
|
||||||
case MemberRole.MODERATOR:
|
case MemberRole.MODERATOR:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You demoted {member} to moderator.";
|
return "You demoted {member} to moderator.";
|
||||||
}
|
}
|
||||||
if (isObjectMemberCurrentActor) {
|
if (isObjectMemberCurrentActor.value) {
|
||||||
return "You were demoted to moderator by {profile}.";
|
return "You were demoted to moderator by {profile}.";
|
||||||
}
|
}
|
||||||
return "{profile} demoted {member} to moderator.";
|
return "{profile} demoted {member} to moderator.";
|
||||||
case MemberRole.MEMBER:
|
case MemberRole.MEMBER:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You demoted {member} to simple member.";
|
return "You demoted {member} to simple member.";
|
||||||
}
|
}
|
||||||
if (isObjectMemberCurrentActor) {
|
if (isObjectMemberCurrentActor.value) {
|
||||||
return "You were demoted to simple member by {profile}.";
|
return "You were demoted to simple member by {profile}.";
|
||||||
}
|
}
|
||||||
return "{profile} demoted {member} to simple member.";
|
return "{profile} demoted {member} to simple member.";
|
||||||
default:
|
default:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You demoted the member {member} to an unknown role.";
|
return "You demoted the member {member} to an unknown role.";
|
||||||
}
|
}
|
||||||
if (isObjectMemberCurrentActor) {
|
if (isObjectMemberCurrentActor.value) {
|
||||||
return "You were demoted to an unknown role by {profile}.";
|
return "You were demoted to an unknown role by {profile}.";
|
||||||
}
|
}
|
||||||
return "{profile} demoted {member} to an unknown role.";
|
return "{profile} demoted {member} to an unknown role.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You updated the member {member}.";
|
return "You updated the member {member}.";
|
||||||
}
|
}
|
||||||
return "{profile} updated the member {member}";
|
return "{profile} updated the member {member}";
|
||||||
|
|
|
@ -49,24 +49,30 @@ const props = defineProps<{
|
||||||
activity: IActivity;
|
activity: IActivity;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const isAuthorCurrentActor = useIsActivityAuthorCurrentActor()(props.activity);
|
const useIsActivityAuthorCurrentActorFct = useIsActivityAuthorCurrentActor();
|
||||||
|
const useActivitySubjectParamsFct = useActivitySubjectParams();
|
||||||
|
|
||||||
const subjectParams = useActivitySubjectParams()(props.activity);
|
const isAuthorCurrentActor = computed(() =>
|
||||||
|
useIsActivityAuthorCurrentActorFct(props.activity)
|
||||||
|
);
|
||||||
|
const subjectParams = computed(() =>
|
||||||
|
useActivitySubjectParamsFct(props.activity)
|
||||||
|
);
|
||||||
|
|
||||||
const translation = computed((): string | undefined => {
|
const translation = computed((): string | undefined => {
|
||||||
switch (props.activity.subject) {
|
switch (props.activity.subject) {
|
||||||
case ActivityPostSubject.POST_CREATED:
|
case ActivityPostSubject.POST_CREATED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You created the post {post}.";
|
return "You created the post {post}.";
|
||||||
}
|
}
|
||||||
return "The post {post} was created by {profile}.";
|
return "The post {post} was created by {profile}.";
|
||||||
case ActivityPostSubject.POST_UPDATED:
|
case ActivityPostSubject.POST_UPDATED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You updated the post {post}.";
|
return "You updated the post {post}.";
|
||||||
}
|
}
|
||||||
return "The post {post} was updated by {profile}.";
|
return "The post {post} was updated by {profile}.";
|
||||||
case ActivityPostSubject.POST_DELETED:
|
case ActivityPostSubject.POST_DELETED:
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You deleted the post {post}.";
|
return "You deleted the post {post}.";
|
||||||
}
|
}
|
||||||
return "The post {post} was deleted by {profile}.";
|
return "The post {post} was deleted by {profile}.";
|
||||||
|
|
|
@ -61,10 +61,15 @@ import { IResource } from "@/types/resource";
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
activity: IActivity;
|
activity: IActivity;
|
||||||
}>();
|
}>();
|
||||||
|
const useIsActivityAuthorCurrentActorFct = useIsActivityAuthorCurrentActor();
|
||||||
|
const useActivitySubjectParamsFct = useActivitySubjectParams();
|
||||||
|
|
||||||
const isAuthorCurrentActor = useIsActivityAuthorCurrentActor()(props.activity);
|
const isAuthorCurrentActor = computed(() =>
|
||||||
|
useIsActivityAuthorCurrentActorFct(props.activity)
|
||||||
const subjectParams = useActivitySubjectParams()(props.activity);
|
);
|
||||||
|
const subjectParams = computed(() =>
|
||||||
|
useActivitySubjectParamsFct(props.activity)
|
||||||
|
);
|
||||||
|
|
||||||
const resource = computed(() => props.activity.object as IResource);
|
const resource = computed(() => props.activity.object as IResource);
|
||||||
|
|
||||||
|
@ -74,12 +79,12 @@ const translation = computed((): string | undefined => {
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
if (props.activity?.object?.type === "folder") {
|
if (props.activity?.object?.type === "folder") {
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You created the folder {resource}.";
|
return "You created the folder {resource}.";
|
||||||
}
|
}
|
||||||
return "{profile} created the folder {resource}.";
|
return "{profile} created the folder {resource}.";
|
||||||
}
|
}
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You created the resource {resource}.";
|
return "You created the resource {resource}.";
|
||||||
}
|
}
|
||||||
return "{profile} created the resource {resource}.";
|
return "{profile} created the resource {resource}.";
|
||||||
|
@ -88,23 +93,23 @@ const translation = computed((): string | undefined => {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
if (props.activity?.object?.type === "folder") {
|
if (props.activity?.object?.type === "folder") {
|
||||||
if (parentDirectory.value === null) {
|
if (parentDirectory.value === null) {
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You moved the folder {resource} to the root folder.";
|
return "You moved the folder {resource} to the root folder.";
|
||||||
}
|
}
|
||||||
return "{profile} moved the folder {resource} to the root folder.";
|
return "{profile} moved the folder {resource} to the root folder.";
|
||||||
}
|
}
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You moved the folder {resource} into {new_path}.";
|
return "You moved the folder {resource} into {new_path}.";
|
||||||
}
|
}
|
||||||
return "{profile} moved the folder {resource} into {new_path}.";
|
return "{profile} moved the folder {resource} into {new_path}.";
|
||||||
}
|
}
|
||||||
if (parentDirectory.value === null) {
|
if (parentDirectory.value === null) {
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You moved the resource {resource} to the root folder.";
|
return "You moved the resource {resource} to the root folder.";
|
||||||
}
|
}
|
||||||
return "{profile} moved the resource {resource} to the root folder.";
|
return "{profile} moved the resource {resource} to the root folder.";
|
||||||
}
|
}
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You moved the resource {resource} into {new_path}.";
|
return "You moved the resource {resource} into {new_path}.";
|
||||||
}
|
}
|
||||||
return "{profile} moved the resource {resource} into {new_path}.";
|
return "{profile} moved the resource {resource} into {new_path}.";
|
||||||
|
@ -112,12 +117,12 @@ const translation = computed((): string | undefined => {
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
if (props.activity?.object?.type === "folder") {
|
if (props.activity?.object?.type === "folder") {
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You renamed the folder from {old_resource_title} to {resource}.";
|
return "You renamed the folder from {old_resource_title} to {resource}.";
|
||||||
}
|
}
|
||||||
return "{profile} renamed the folder from {old_resource_title} to {resource}.";
|
return "{profile} renamed the folder from {old_resource_title} to {resource}.";
|
||||||
}
|
}
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You renamed the resource from {old_resource_title} to {resource}.";
|
return "You renamed the resource from {old_resource_title} to {resource}.";
|
||||||
}
|
}
|
||||||
return "{profile} renamed the resource from {old_resource_title} to {resource}.";
|
return "{profile} renamed the resource from {old_resource_title} to {resource}.";
|
||||||
|
@ -125,12 +130,12 @@ const translation = computed((): string | undefined => {
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
if (props.activity?.object?.type === "folder") {
|
if (props.activity?.object?.type === "folder") {
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You deleted the folder {resource}.";
|
return "You deleted the folder {resource}.";
|
||||||
}
|
}
|
||||||
return "{profile} deleted the folder {resource}.";
|
return "{profile} deleted the folder {resource}.";
|
||||||
}
|
}
|
||||||
if (isAuthorCurrentActor) {
|
if (isAuthorCurrentActor.value) {
|
||||||
return "You deleted the resource {resource}.";
|
return "You deleted the resource {resource}.";
|
||||||
}
|
}
|
||||||
return "{profile} deleted the resource {resource}.";
|
return "{profile} deleted the resource {resource}.";
|
||||||
|
@ -180,8 +185,8 @@ const parentPath = (parent: string | undefined): string | undefined => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const parentDirectory = computed((): string | undefined | null => {
|
const parentDirectory = computed((): string | undefined | null => {
|
||||||
if (subjectParams.resource_path) {
|
if (subjectParams.value.resource_path) {
|
||||||
const parentPathResult = parentPath(subjectParams.resource_path);
|
const parentPathResult = parentPath(subjectParams.value.resource_path);
|
||||||
const directory = parentPathResult?.split("/");
|
const directory = parentPathResult?.split("/");
|
||||||
const res = directory?.pop();
|
const res = directory?.pop();
|
||||||
res === "" ? null : res;
|
res === "" ? null : res;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div>
|
<div>
|
||||||
<form
|
<form
|
||||||
v-if="isAbleToComment"
|
v-if="isAbleToComment"
|
||||||
@submit.prevent="createCommentForEvent(newComment)"
|
@submit.prevent="createCommentForEvent(newCommentValue)"
|
||||||
class="mt-2"
|
class="mt-2"
|
||||||
>
|
>
|
||||||
<o-notification
|
<o-notification
|
||||||
|
@ -12,8 +12,11 @@
|
||||||
>{{ t("Comments are closed for everybody else.") }}</o-notification
|
>{{ t("Comments are closed for everybody else.") }}</o-notification
|
||||||
>
|
>
|
||||||
<article class="flex flex-wrap items-start gap-2">
|
<article class="flex flex-wrap items-start gap-2">
|
||||||
<figure class="" v-if="newComment.actor">
|
<figure class="" v-if="newCommentValue.actor">
|
||||||
<identity-picker-wrapper :inline="false" v-model="newComment.actor" />
|
<identity-picker-wrapper
|
||||||
|
:inline="false"
|
||||||
|
v-model="newCommentValue.actor"
|
||||||
|
/>
|
||||||
</figure>
|
</figure>
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<div class="flex flex-col gap-2">
|
<div class="flex flex-col gap-2">
|
||||||
|
@ -23,9 +26,9 @@
|
||||||
v-if="currentActor"
|
v-if="currentActor"
|
||||||
:currentActor="currentActor"
|
:currentActor="currentActor"
|
||||||
mode="comment"
|
mode="comment"
|
||||||
v-model="newComment.text"
|
v-model="newCommentValue.text"
|
||||||
:aria-label="t('Comment body')"
|
:aria-label="t('Comment body')"
|
||||||
@submit="createCommentForEvent(newComment)"
|
@submit="createCommentForEvent(newCommentValue)"
|
||||||
:placeholder="t('Write a new comment')"
|
:placeholder="t('Write a new comment')"
|
||||||
/>
|
/>
|
||||||
<p class="" v-if="emptyCommentError">
|
<p class="" v-if="emptyCommentError">
|
||||||
|
@ -35,7 +38,7 @@
|
||||||
<div class="" v-if="isEventOrganiser">
|
<div class="" v-if="isEventOrganiser">
|
||||||
<o-switch
|
<o-switch
|
||||||
aria-labelledby="notify-participants-toggle"
|
aria-labelledby="notify-participants-toggle"
|
||||||
v-model="newComment.isAnnouncement"
|
v-model="newCommentValue.isAnnouncement"
|
||||||
>{{ t("Notify participants") }}</o-switch
|
>{{ t("Notify participants") }}</o-switch
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
|
@ -70,7 +73,9 @@
|
||||||
v-for="comment in filteredOrderedComments"
|
v-for="comment in filteredOrderedComments"
|
||||||
:key="comment.id"
|
:key="comment.id"
|
||||||
@create-comment="createCommentForEvent"
|
@create-comment="createCommentForEvent"
|
||||||
@delete-comment="commentToDelete => deleteComment({
|
@delete-comment="
|
||||||
|
(commentToDelete) =>
|
||||||
|
deleteComment({
|
||||||
commentId: commentToDelete.id as string,
|
commentId: commentToDelete.id as string,
|
||||||
originCommentId: commentToDelete.originComment?.id,
|
originCommentId: commentToDelete.originComment?.id,
|
||||||
})
|
})
|
||||||
|
@ -126,17 +131,19 @@ const Editor = defineAsyncComponent(
|
||||||
() => import("@/components/TextEditor.vue")
|
() => import("@/components/TextEditor.vue")
|
||||||
);
|
);
|
||||||
|
|
||||||
const newComment = ref<IComment>(props.newComment ?? new CommentModel());
|
const newCommentProps = computed(() => props.newComment);
|
||||||
|
|
||||||
|
const newCommentValue = ref<IComment>(new CommentModel(newCommentProps.value));
|
||||||
|
|
||||||
const emptyCommentError = ref(false);
|
const emptyCommentError = ref(false);
|
||||||
|
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
watch(currentActor, () => {
|
watch(currentActor, () => {
|
||||||
newComment.value.actor = currentActor.value as IPerson;
|
newCommentValue.value.actor = currentActor.value as IPerson;
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(newComment, (newCommentUpdated: IComment) => {
|
watch(newCommentValue, (newCommentUpdated: IComment) => {
|
||||||
if (emptyCommentError.value) {
|
if (emptyCommentError.value) {
|
||||||
emptyCommentError.value = ["", "<p></p>"].includes(newCommentUpdated.text);
|
emptyCommentError.value = ["", "<p></p>"].includes(newCommentUpdated.text);
|
||||||
}
|
}
|
||||||
|
@ -212,7 +219,7 @@ const {
|
||||||
|
|
||||||
createCommentForEventMutationDone(() => {
|
createCommentForEventMutationDone(() => {
|
||||||
// and reset the new comment field
|
// and reset the new comment field
|
||||||
newComment.value = new CommentModel();
|
newCommentValue.value = new CommentModel();
|
||||||
});
|
});
|
||||||
|
|
||||||
const notifier = inject<Notifier>("notifier");
|
const notifier = inject<Notifier>("notifier");
|
||||||
|
|
|
@ -27,9 +27,12 @@ const props = defineProps<{
|
||||||
|
|
||||||
const selectedIndex = ref(0);
|
const selectedIndex = ref(0);
|
||||||
|
|
||||||
watch(props.items, () => {
|
watch(
|
||||||
|
() => props.items,
|
||||||
|
() => {
|
||||||
selectedIndex.value = 0;
|
selectedIndex.value = 0;
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
// const onKeyDown = ({ event }: { event: KeyboardEvent }): boolean => {
|
// const onKeyDown = ({ event }: { event: KeyboardEvent }): boolean => {
|
||||||
// if (event.key === "ArrowUp") {
|
// if (event.key === "ArrowUp") {
|
||||||
|
@ -80,7 +83,9 @@ const selectItem = (index: number): void => {
|
||||||
color: rgba(black, 0.8);
|
color: rgba(black, 0.8);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0px 10px 20px rgba(0, 0, 0, 0.1);
|
box-shadow:
|
||||||
|
0 0 0 1px rgba(0, 0, 0, 0.1),
|
||||||
|
0px 10px 20px rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
|
|
|
@ -41,12 +41,12 @@ const keys = computed((): string[] => {
|
||||||
return Array.from(monthlyGroupedEvents.value.keys()).sort((a, b) => {
|
return Array.from(monthlyGroupedEvents.value.keys()).sort((a, b) => {
|
||||||
const aParams = a.split("-").map((x) => parseInt(x, 10)) as [
|
const aParams = a.split("-").map((x) => parseInt(x, 10)) as [
|
||||||
number,
|
number,
|
||||||
number
|
number,
|
||||||
];
|
];
|
||||||
const aDate = new Date(...aParams);
|
const aDate = new Date(...aParams);
|
||||||
const bParams = b.split("-").map((x) => parseInt(x, 10)) as [
|
const bParams = b.split("-").map((x) => parseInt(x, 10)) as [
|
||||||
number,
|
number,
|
||||||
number
|
number,
|
||||||
];
|
];
|
||||||
const bDate = new Date(...bParams);
|
const bDate = new Date(...bParams);
|
||||||
return props.order === "DESC"
|
return props.order === "DESC"
|
||||||
|
|
|
@ -22,7 +22,7 @@ const props = defineProps<{
|
||||||
preferredUsername: string;
|
preferredUsername: string;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const { group } = useGroup(props.preferredUsername);
|
const { group } = useGroup(computed(() => props.preferredUsername));
|
||||||
|
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="map-container">
|
<div class="map-container">
|
||||||
<l-map
|
<l-map
|
||||||
:zoom="mergedOptions.zoom"
|
:zoom="mergedOptions.zoom"
|
||||||
:style="`height: ${mergedOptions.height}; width: ${mergedOptions.width}`"
|
:style="{ height: mergedOptions.height, width: mergedOptions.width }"
|
||||||
class="leaflet-map"
|
class="leaflet-map"
|
||||||
:center="[lat, lon]"
|
:center="[lat, lon]"
|
||||||
@click="clickMap"
|
@click="clickMap"
|
||||||
|
|
|
@ -86,6 +86,8 @@ const imageSource = computed(
|
||||||
rgba(2, 0, 36, 0.75) 90%,
|
rgba(2, 0, 36, 0.75) 90%,
|
||||||
rgba(2, 0, 36, 0.85) 100%
|
rgba(2, 0, 36, 0.85) 100%
|
||||||
);
|
);
|
||||||
transition: opacity 0.1s ease-in-out, visibility 0.1s ease-in-out;
|
transition:
|
||||||
|
opacity 0.1s ease-in-out,
|
||||||
|
visibility 0.1s ease-in-out;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -91,7 +91,7 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { useHead } from "@vueuse/head";
|
import { useHead } from "@vueuse/head";
|
||||||
import { computed, ref } from "vue";
|
import { computed, inject, ref } from "vue";
|
||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
import { useMutation } from "@vue/apollo-composable";
|
import { useMutation } from "@vue/apollo-composable";
|
||||||
import {
|
import {
|
||||||
|
@ -102,6 +102,7 @@ import RouteName from "@/router/name";
|
||||||
import { IApplication } from "@/types/application.model";
|
import { IApplication } from "@/types/application.model";
|
||||||
import { scope as oAuthScopes } from "./scopes";
|
import { scope as oAuthScopes } from "./scopes";
|
||||||
import AlertCircle from "vue-material-design-icons/AlertCircle.vue";
|
import AlertCircle from "vue-material-design-icons/AlertCircle.vue";
|
||||||
|
import { Notifier } from "@/plugins/notifier";
|
||||||
|
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
|
@ -123,8 +124,11 @@ const collapses = computed(() =>
|
||||||
.filter((localScope) => localScope)
|
.filter((localScope) => localScope)
|
||||||
);
|
);
|
||||||
|
|
||||||
const { mutate: authorizeMutation, onDone: onAuthorizeMutationDone } =
|
const {
|
||||||
useMutation<
|
mutate: authorizeMutation,
|
||||||
|
onDone: onAuthorizeMutationDone,
|
||||||
|
onError: onAuthorizeMutationError,
|
||||||
|
} = useMutation<
|
||||||
{
|
{
|
||||||
authorizeApplication: {
|
authorizeApplication: {
|
||||||
code: string;
|
code: string;
|
||||||
|
@ -139,7 +143,7 @@ const { mutate: authorizeMutation, onDone: onAuthorizeMutationDone } =
|
||||||
state?: string | null;
|
state?: string | null;
|
||||||
scope?: string | null;
|
scope?: string | null;
|
||||||
}
|
}
|
||||||
>(AUTORIZE_APPLICATION);
|
>(AUTORIZE_APPLICATION);
|
||||||
|
|
||||||
const authorize = () => {
|
const authorize = () => {
|
||||||
authorizeMutation({
|
authorizeMutation({
|
||||||
|
@ -209,6 +213,14 @@ onAuthorizeMutationDone(({ data }) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const notifier = inject<Notifier>("notifier");
|
||||||
|
|
||||||
|
onAuthorizeMutationError(({ graphQLErrors }) => {
|
||||||
|
graphQLErrors.forEach(({ message }) => {
|
||||||
|
notifier?.error(message);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
useHead({
|
useHead({
|
||||||
title: computed(() => t("Authorize application")),
|
title: computed(() => t("Authorize application")),
|
||||||
});
|
});
|
||||||
|
|
|
@ -133,10 +133,57 @@ export const scope: Record<
|
||||||
"write:group:members": {
|
"write:group:members": {
|
||||||
title: t("Manage group members"),
|
title: t("Manage group members"),
|
||||||
text: t(
|
text: t(
|
||||||
"This application will be allowed to manage group members in all of the groups you're a member of"
|
"This application will be allowed to list group members in all of the groups you're a member of"
|
||||||
),
|
),
|
||||||
icon: "account-circle",
|
icon: "account-circle",
|
||||||
},
|
},
|
||||||
|
"read:user:media": {
|
||||||
|
title: t("Read user media"),
|
||||||
|
text: t(
|
||||||
|
"This application will be allowed to list the media you've uploaded"
|
||||||
|
),
|
||||||
|
icon: "image",
|
||||||
|
},
|
||||||
|
"read:user:settings": {
|
||||||
|
title: t("Read user settings"),
|
||||||
|
text: t("This application will be allowed to access your user settings"),
|
||||||
|
icon: "cog",
|
||||||
|
},
|
||||||
|
"read:user:activity_settings": {
|
||||||
|
title: t("Read user activity settings"),
|
||||||
|
text: t(
|
||||||
|
"This application will be allowed to access your user activity settings"
|
||||||
|
),
|
||||||
|
icon: "cog",
|
||||||
|
},
|
||||||
|
"read:user:participations": {
|
||||||
|
title: t("Read user participations"),
|
||||||
|
text: t(
|
||||||
|
"This application will be allowed to list and view the events you're participating to"
|
||||||
|
),
|
||||||
|
icon: "account-circle",
|
||||||
|
},
|
||||||
|
"read:user:memberships": {
|
||||||
|
title: t("Read user memberships"),
|
||||||
|
text: t(
|
||||||
|
"This application will be allowed to list and view the groups you're a member of"
|
||||||
|
),
|
||||||
|
icon: "account-circle",
|
||||||
|
},
|
||||||
|
"read:user:draft_events": {
|
||||||
|
title: t("Access drafts events"),
|
||||||
|
text: t(
|
||||||
|
"This application will be allowed to list and view your draft events"
|
||||||
|
),
|
||||||
|
icon: "calendar",
|
||||||
|
},
|
||||||
|
"read:user:group_suggested_events": {
|
||||||
|
title: t("Access group suggested events"),
|
||||||
|
text: t(
|
||||||
|
"This application will be allowed to list your suggested group events"
|
||||||
|
),
|
||||||
|
icon: "calendar",
|
||||||
|
},
|
||||||
"read:profile:organized_events": {
|
"read:profile:organized_events": {
|
||||||
title: t("Access organized events"),
|
title: t("Access organized events"),
|
||||||
text: t(
|
text: t(
|
||||||
|
|
|
@ -90,9 +90,9 @@ const { onDone, onError, mutate } = useMutation<{
|
||||||
confirmParticipation: IParticipant;
|
confirmParticipation: IParticipant;
|
||||||
}>(CONFIRM_PARTICIPATION);
|
}>(CONFIRM_PARTICIPATION);
|
||||||
|
|
||||||
mutate({
|
mutate(() => ({
|
||||||
token: props.token,
|
token: props.token,
|
||||||
});
|
}));
|
||||||
|
|
||||||
onDone(async ({ data }) => {
|
onDone(async ({ data }) => {
|
||||||
participation.value = data?.confirmParticipation;
|
participation.value = data?.confirmParticipation;
|
||||||
|
|
|
@ -17,7 +17,7 @@ const props = defineProps<{
|
||||||
uuid: string;
|
uuid: string;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const { event } = useFetchEvent(props.uuid);
|
const { event } = useFetchEvent(computed(() => props.uuid));
|
||||||
|
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
|
|
|
@ -156,7 +156,7 @@ const { anonymousActorId } = useAnonymousActorId();
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
uuid: string;
|
uuid: string;
|
||||||
}>();
|
}>();
|
||||||
const { event, loading } = useFetchEventBasic(props.uuid);
|
const { event, loading } = useFetchEventBasic(computed(() => props.uuid));
|
||||||
|
|
||||||
const { t, locale } = useI18n({ useScope: "global" });
|
const { t, locale } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
|
|
|
@ -104,7 +104,7 @@ import { useI18n } from "vue-i18n";
|
||||||
|
|
||||||
const props = defineProps<{ uuid: string }>();
|
const props = defineProps<{ uuid: string }>();
|
||||||
|
|
||||||
const { event } = useFetchEvent(props.uuid);
|
const { event } = useFetchEvent(computed(() => props.uuid));
|
||||||
|
|
||||||
const { anonymousParticipationConfig } = useAnonymousParticipationConfig();
|
const { anonymousParticipationConfig } = useAnonymousParticipationConfig();
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ import RouteName from "@/router/name";
|
||||||
import { IMinimalActor, usernameWithDomain } from "@/types/actor";
|
import { IMinimalActor, usernameWithDomain } from "@/types/actor";
|
||||||
import ResourceDropdown from "./ResourceDropdown.vue";
|
import ResourceDropdown from "./ResourceDropdown.vue";
|
||||||
import { UPDATE_RESOURCE } from "@/graphql/resources";
|
import { UPDATE_RESOURCE } from "@/graphql/resources";
|
||||||
import { inject, ref } from "vue";
|
import { ComputedRef, computed, inject, ref } from "vue";
|
||||||
import { formatDateTimeString } from "@/filters/datetime";
|
import { formatDateTimeString } from "@/filters/datetime";
|
||||||
import { useMutation } from "@vue/apollo-composable";
|
import { useMutation } from "@vue/apollo-composable";
|
||||||
import { resourcePathArray } from "@/components/Resource/utils";
|
import { resourcePathArray } from "@/components/Resource/utils";
|
||||||
|
@ -73,11 +73,11 @@ const emit = defineEmits<{
|
||||||
|
|
||||||
const list = ref([]);
|
const list = ref([]);
|
||||||
|
|
||||||
const groupObject: Record<string, unknown> = {
|
const groupObject: ComputedRef<Record<string, unknown>> = computed(() => ({
|
||||||
name: `folder-${props.resource?.title}`,
|
name: `folder-${props.resource?.title}`,
|
||||||
pull: false,
|
pull: false,
|
||||||
put: ["resources"],
|
put: ["resources"],
|
||||||
};
|
}));
|
||||||
|
|
||||||
const onChange = async (evt: any) => {
|
const onChange = async (evt: any) => {
|
||||||
if (evt.added && evt.added.element) {
|
if (evt.added && evt.added.element) {
|
||||||
|
|
|
@ -92,14 +92,17 @@ const emit = defineEmits(["update-resource", "close-move-modal"]);
|
||||||
|
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
|
const initialResourceProp = computed(() => props.initialResource);
|
||||||
|
const usernameProp = computed(() => props.username);
|
||||||
|
|
||||||
const resourcePath = reactive<{
|
const resourcePath = reactive<{
|
||||||
path: string | undefined;
|
path: string | undefined;
|
||||||
username: string;
|
username: string;
|
||||||
id: string | undefined;
|
id: string | undefined;
|
||||||
}>({
|
}>({
|
||||||
id: props.initialResource.parent?.id,
|
id: initialResourceProp.value.parent?.id,
|
||||||
path: props.initialResource.parent?.path,
|
path: initialResourceProp.value.parent?.path,
|
||||||
username: props.username,
|
username: usernameProp.value,
|
||||||
});
|
});
|
||||||
|
|
||||||
const RESOURCES_PER_PAGE = 10;
|
const RESOURCES_PER_PAGE = 10;
|
||||||
|
@ -111,27 +114,30 @@ const { result: resourceResult, refetch } = useQuery<{ resource: IResource }>(
|
||||||
if (resourcePath?.path) {
|
if (resourcePath?.path) {
|
||||||
return {
|
return {
|
||||||
path: resourcePath?.path,
|
path: resourcePath?.path,
|
||||||
username: props.username,
|
username: usernameProp.value,
|
||||||
page: page.value,
|
page: page.value,
|
||||||
limit: RESOURCES_PER_PAGE,
|
limit: RESOURCES_PER_PAGE,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return { path: "/", username: props.username };
|
return { path: "/", username: usernameProp.value };
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
const resource = computed(() => resourceResult.value?.resource);
|
const resource = computed(() => resourceResult.value?.resource);
|
||||||
|
|
||||||
const goDown = (element: IResource): void => {
|
const goDown = (element: IResource): void => {
|
||||||
if (element.type === "folder" && element.id !== props.initialResource.id) {
|
if (
|
||||||
|
element.type === "folder" &&
|
||||||
|
element.id !== initialResourceProp.value.id
|
||||||
|
) {
|
||||||
resourcePath.id = element.id;
|
resourcePath.id = element.id;
|
||||||
resourcePath.path = element.path;
|
resourcePath.path = element.path;
|
||||||
console.debug("Gone into folder", resourcePath);
|
console.debug("Gone into folder", resourcePath);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
watch(props.initialResource, () => {
|
watch(initialResourceProp, () => {
|
||||||
if (props.initialResource) {
|
if (initialResourceProp.value) {
|
||||||
resourcePath.id = props.initialResource?.parent?.id;
|
resourcePath.id = props.initialResource?.parent?.id;
|
||||||
resourcePath.path = props.initialResource?.parent?.path;
|
resourcePath.path = props.initialResource?.parent?.path;
|
||||||
refetch();
|
refetch();
|
||||||
|
@ -144,21 +150,21 @@ const updateResource = (): void => {
|
||||||
emit(
|
emit(
|
||||||
"update-resource",
|
"update-resource",
|
||||||
{
|
{
|
||||||
id: props.initialResource.id,
|
id: initialResourceProp.value.id,
|
||||||
title: props.initialResource.title,
|
title: initialResourceProp.value.title,
|
||||||
parent: parent,
|
parent: parent,
|
||||||
path: parent?.path ?? "/",
|
path: parent?.path ?? "/",
|
||||||
},
|
},
|
||||||
props.initialResource.parent
|
initialResourceProp.value.parent
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const moveDisabled = computed((): boolean | undefined => {
|
const moveDisabled = computed((): boolean | undefined => {
|
||||||
return (
|
return (
|
||||||
(props.initialResource.parent &&
|
(initialResourceProp.value.parent &&
|
||||||
resourcePath &&
|
resourcePath &&
|
||||||
props.initialResource.parent.path === resourcePath.path) ||
|
initialResourceProp.value.parent.path === resourcePath.path) ||
|
||||||
(props.initialResource.parent === undefined &&
|
(initialResourceProp.value.parent === undefined &&
|
||||||
resourcePath &&
|
resourcePath &&
|
||||||
resourcePath.path === "/")
|
resourcePath.path === "/")
|
||||||
);
|
);
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
>
|
>
|
||||||
<event-card
|
<event-card
|
||||||
v-if="instanceOfIEvent(activeElement)"
|
v-if="instanceOfIEvent(activeElement)"
|
||||||
:event="(activeElement as IEvent)"
|
:event="activeElement as IEvent"
|
||||||
mode="column"
|
mode="column"
|
||||||
:options="{
|
:options="{
|
||||||
isRemoteEvent: activeElement.__typename === 'EventResult',
|
isRemoteEvent: activeElement.__typename === 'EventResult',
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
/>
|
/>
|
||||||
<group-card
|
<group-card
|
||||||
v-else
|
v-else
|
||||||
:group="(activeElement as IGroup)"
|
:group="activeElement as IGroup"
|
||||||
mode="column"
|
mode="column"
|
||||||
:isRemoteGroup="activeElement.__typename === 'GroupResult'"
|
:isRemoteGroup="activeElement.__typename === 'GroupResult'"
|
||||||
:isLoggedIn="isLoggedIn"
|
:isLoggedIn="isLoggedIn"
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
>
|
>
|
||||||
<event-card
|
<event-card
|
||||||
v-if="instanceOfIEvent(activeElement)"
|
v-if="instanceOfIEvent(activeElement)"
|
||||||
:event="(activeElement as IEvent)"
|
:event="activeElement as IEvent"
|
||||||
mode="column"
|
mode="column"
|
||||||
:options="{
|
:options="{
|
||||||
isRemoteEvent: activeElement.__typename === 'EventResult',
|
isRemoteEvent: activeElement.__typename === 'EventResult',
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
/>
|
/>
|
||||||
<group-card
|
<group-card
|
||||||
v-else
|
v-else
|
||||||
:group="(activeElement as IGroup)"
|
:group="activeElement as IGroup"
|
||||||
mode="column"
|
mode="column"
|
||||||
:isRemoteGroup="activeElement.__typename === 'GroupResult'"
|
:isRemoteGroup="activeElement.__typename === 'GroupResult'"
|
||||||
:isLoggedIn="isLoggedIn"
|
:isLoggedIn="isLoggedIn"
|
||||||
|
@ -330,7 +330,11 @@ watch([markers, eventMarkers, groupMarkers], () => {
|
||||||
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 15px;
|
border-radius: 15px;
|
||||||
font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif;
|
font:
|
||||||
|
12px "Helvetica Neue",
|
||||||
|
Arial,
|
||||||
|
Helvetica,
|
||||||
|
sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
.marker-cluster span {
|
.marker-cluster span {
|
||||||
|
|
|
@ -325,13 +325,18 @@ const transformPastedHTML = (html: string): string => {
|
||||||
return html;
|
return html;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const ariaLabel = computed(() => props.ariaLabel);
|
||||||
|
const headingLevel = computed(() => props.headingLevel);
|
||||||
|
const placeholder = computed(() => props.placeholder);
|
||||||
|
const value = computed(() => props.modelValue);
|
||||||
|
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
const editor = useEditor({
|
const editor = useEditor({
|
||||||
editorProps: {
|
editorProps: {
|
||||||
attributes: {
|
attributes: {
|
||||||
"aria-multiline": isShortMode.value.toString(),
|
"aria-multiline": isShortMode.value.toString(),
|
||||||
"aria-label": props.ariaLabel ?? "",
|
"aria-label": ariaLabel.value ?? "",
|
||||||
role: "textbox",
|
role: "textbox",
|
||||||
class:
|
class:
|
||||||
"prose dark:prose-invert prose-sm lg:prose-lg xl:prose-xl bg-zinc-50 dark:bg-zinc-700 focus:outline-none !max-w-full",
|
"prose dark:prose-invert prose-sm lg:prose-lg xl:prose-xl bg-zinc-50 dark:bg-zinc-700 focus:outline-none !max-w-full",
|
||||||
|
@ -342,7 +347,7 @@ const editor = useEditor({
|
||||||
Blockquote,
|
Blockquote,
|
||||||
BulletList,
|
BulletList,
|
||||||
Heading.configure({
|
Heading.configure({
|
||||||
levels: props.headingLevel,
|
levels: headingLevel.value,
|
||||||
}),
|
}),
|
||||||
Document,
|
Document,
|
||||||
Paragraph,
|
Paragraph,
|
||||||
|
@ -366,18 +371,16 @@ const editor = useEditor({
|
||||||
submit: () => emit("submit"),
|
submit: () => emit("submit"),
|
||||||
}),
|
}),
|
||||||
Placeholder.configure({
|
Placeholder.configure({
|
||||||
placeholder: props.placeholder ?? t("Write something"),
|
placeholder: placeholder.value ?? t("Write something"),
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
injectCSS: false,
|
injectCSS: false,
|
||||||
content: props.modelValue,
|
content: value.value,
|
||||||
onUpdate: () => {
|
onUpdate: () => {
|
||||||
emit("update:modelValue", editor.value?.getHTML());
|
emit("update:modelValue", editor.value?.getHTML());
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const value = computed(() => props.modelValue);
|
|
||||||
|
|
||||||
watch(value, (val: string) => {
|
watch(value, (val: string) => {
|
||||||
if (!editor.value) return;
|
if (!editor.value) return;
|
||||||
if (val !== editor.value.getHTML()) {
|
if (val !== editor.value.getHTML()) {
|
||||||
|
@ -479,7 +482,9 @@ onBeforeUnmount(() => {
|
||||||
@import "./Editor/style.scss";
|
@import "./Editor/style.scss";
|
||||||
|
|
||||||
.menubar {
|
.menubar {
|
||||||
transition: visibility 0.2s 0.4s, opacity 0.2s 0.4s;
|
transition:
|
||||||
|
visibility 0.2s 0.4s,
|
||||||
|
opacity 0.2s 0.4s;
|
||||||
|
|
||||||
&__button {
|
&__button {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
|
|
@ -84,14 +84,19 @@ const emit = defineEmits(["confirm", "cancel", "close"]);
|
||||||
|
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
|
const hasInput = computed(() => props.hasInput);
|
||||||
|
const onConfirm = computed(() => props.onConfirm);
|
||||||
|
const onCancel = computed(() => props.onCancel);
|
||||||
|
const inputAttrs = computed(() => props.inputAttrs);
|
||||||
|
|
||||||
// const modalOpened = ref(false);
|
// const modalOpened = ref(false);
|
||||||
|
|
||||||
const prompt = ref<string>(props.hasInput ? props.inputAttrs?.value ?? "" : "");
|
const prompt = ref<string>(hasInput.value ? inputAttrs.value.value ?? "" : "");
|
||||||
const input = ref();
|
const input = ref();
|
||||||
|
|
||||||
// https://github.com/oruga-ui/oruga/issues/339
|
// https://github.com/oruga-ui/oruga/issues/339
|
||||||
const promptInputComp = computed(() => input.value?.$refs.input);
|
const promptInputComp = computed(() => input.value?.$refs.input);
|
||||||
if (props.hasInput) {
|
if (hasInput.value) {
|
||||||
useFocus(promptInputComp, { initialValue: true });
|
useFocus(promptInputComp, { initialValue: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +133,7 @@ const confirm = () => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
props.onConfirm(prompt.value);
|
onConfirm.value(prompt.value);
|
||||||
close();
|
close();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -144,8 +149,8 @@ const close = () => {
|
||||||
*/
|
*/
|
||||||
const cancel = (source: string) => {
|
const cancel = (source: string) => {
|
||||||
emit("cancel", source);
|
emit("cancel", source);
|
||||||
if (props?.onCancel) {
|
if (onCancel.value) {
|
||||||
props?.onCancel(source);
|
onCancel.value(source);
|
||||||
}
|
}
|
||||||
close();
|
close();
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
import { DELETE_EVENT, FETCH_EVENT, FETCH_EVENT_BASIC } from "@/graphql/event";
|
import { DELETE_EVENT, FETCH_EVENT, FETCH_EVENT_BASIC } from "@/graphql/event";
|
||||||
import { IEvent } from "@/types/event.model";
|
import { IEvent } from "@/types/event.model";
|
||||||
import { useMutation, useQuery } from "@vue/apollo-composable";
|
import { useMutation, useQuery } from "@vue/apollo-composable";
|
||||||
import { computed } from "vue";
|
import { Ref, computed, unref } from "vue";
|
||||||
|
|
||||||
export function useFetchEvent(uuid?: string) {
|
export function useFetchEvent(uuidValue?: string | Ref<string>) {
|
||||||
|
const uuid = unref(uuidValue);
|
||||||
const {
|
const {
|
||||||
result: fetchEventResult,
|
result: fetchEventResult,
|
||||||
loading,
|
loading,
|
||||||
|
@ -26,7 +27,8 @@ export function useFetchEvent(uuid?: string) {
|
||||||
return { event, loading, error, onError, onResult, refetch };
|
return { event, loading, error, onError, onResult, refetch };
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useFetchEventBasic(uuid: string) {
|
export function useFetchEventBasic(uuidValue?: string | Ref<string>) {
|
||||||
|
const uuid = unref(uuidValue);
|
||||||
const {
|
const {
|
||||||
result: fetchEventResult,
|
result: fetchEventResult,
|
||||||
loading,
|
loading,
|
||||||
|
|
|
@ -1567,5 +1567,17 @@
|
||||||
"Announcements": "Announcements",
|
"Announcements": "Announcements",
|
||||||
"Application authorized": "Application authorized",
|
"Application authorized": "Application authorized",
|
||||||
"Check your device to continue. You may now close this window.": "Check your device to continue. You may now close this window.",
|
"Check your device to continue. You may now close this window.": "Check your device to continue. You may now close this window.",
|
||||||
"Participants to {eventTitle}": "Participants to {eventTitle}"
|
"Participants to {eventTitle}": "Participants to {eventTitle}",
|
||||||
|
"Read user media": "Read user media",
|
||||||
|
"This application will be allowed to list the media you've uploaded": "This application will be allowed to list the media you've uploaded",
|
||||||
|
"Read user settings": "Read user settings",
|
||||||
|
"This application will be allowed to access your user settings": "This application will be allowed to access your user settings",
|
||||||
|
"Read user activity settings": "Read user activity settings",
|
||||||
|
"This application will be allowed to access your user activity settings": "This application will be allowed to access your user activity settings",
|
||||||
|
"Read user participations": "Read user participations",
|
||||||
|
"Read user memberships": "Read user memberships",
|
||||||
|
"Access drafts events": "Access drafts events",
|
||||||
|
"This application will be allowed to list and view your draft events": "This application will be allowed to list and view your draft events",
|
||||||
|
"Access group suggested events": "Access group suggested events",
|
||||||
|
"This application will be allowed to list your suggested group events": "This application will be allowed to list your suggested group events"
|
||||||
}
|
}
|
|
@ -1563,5 +1563,17 @@
|
||||||
"© The OpenStreetMap Contributors": "© Les Contributeur⋅ices OpenStreetMap",
|
"© The OpenStreetMap Contributors": "© Les Contributeur⋅ices OpenStreetMap",
|
||||||
"Application authorized": "Application autorisée",
|
"Application authorized": "Application autorisée",
|
||||||
"Check your device to continue. You may now close this window.": "Vérifiez votre appareil pour continuer. Vous pouvez maintenant fermer cette fenêtre.",
|
"Check your device to continue. You may now close this window.": "Vérifiez votre appareil pour continuer. Vous pouvez maintenant fermer cette fenêtre.",
|
||||||
"Participants to {eventTitle}": "Participant·es à {eventTitle}"
|
"Participants to {eventTitle}": "Participant·es à {eventTitle}",
|
||||||
|
"Read user media": "Lire les médias utilisateur·ice",
|
||||||
|
"This application will be allowed to list the media you've uploaded": "Cette application sera autorisée a lister les médias que vous avez téléversé",
|
||||||
|
"Read user settings": "Lire les paramètres utilisateur·ice",
|
||||||
|
"This application will be allowed to access your user settings": "Cette application sera autorisée a accéder à vos paramètres utilisateur·ice",
|
||||||
|
"Read user activity settings": "Lire les paramètres d'activité utilisateur·ice",
|
||||||
|
"This application will be allowed to access your user activity settings": "Cette application sera autorisée a accéder à vos paramètres utilisateur·ice d'activité",
|
||||||
|
"Read user participations": "Accéder aux participations de l'utilisateur·ice",
|
||||||
|
"Read user memberships": "Accéder aux adhésions de l'utilisateur·ice",
|
||||||
|
"Access drafts events": "Accéder aux événements brouillons",
|
||||||
|
"This application will be allowed to list and view your draft events": "Cetta application sera autorisée à lister et accéder à vos événements brouillons",
|
||||||
|
"Access group suggested events": "Accéder aux événements des groupes suggérés",
|
||||||
|
"This application will be allowed to list your suggested group events": "Cetta application sera autorisée à lister les événements de vos groupes qui vous sont suggérés"
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ export const beforeRegisterGuard: NavigationGuard = async (to, from, next) => {
|
||||||
);
|
);
|
||||||
|
|
||||||
onResult(({ data }) => {
|
onResult(({ data }) => {
|
||||||
|
if (!data) return next();
|
||||||
const { config } = data;
|
const { config } = data;
|
||||||
|
|
||||||
if (!config.registrationsOpen && !config.registrationsAllowlist) {
|
if (!config.registrationsOpen && !config.registrationsAllowlist) {
|
||||||
|
|
|
@ -34,10 +34,13 @@ export const checkProviderConfig = (
|
||||||
export const convertConfig = (
|
export const convertConfig = (
|
||||||
configs: IKeyValueConfig[]
|
configs: IKeyValueConfig[]
|
||||||
): Record<string, any> => {
|
): Record<string, any> => {
|
||||||
return configs.reduce((acc, config) => {
|
return configs.reduce(
|
||||||
|
(acc, config) => {
|
||||||
acc[config.key] = toType(config.value, config.type);
|
acc[config.key] = toType(config.value, config.type);
|
||||||
return acc;
|
return acc;
|
||||||
}, {} as Record<string, any>);
|
},
|
||||||
|
{} as Record<string, any>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const toType = (value: string, type: string): string | number | boolean => {
|
const toType = (value: string, type: string): string | number | boolean => {
|
||||||
|
|
|
@ -16,6 +16,10 @@ export interface IActor {
|
||||||
}
|
}
|
||||||
|
|
||||||
export type IMinimalActor = Pick<IActor, "preferredUsername" | "domain">;
|
export type IMinimalActor = Pick<IActor, "preferredUsername" | "domain">;
|
||||||
|
export type IMinimalActorWithName = Pick<
|
||||||
|
IActor,
|
||||||
|
"preferredUsername" | "domain" | "name"
|
||||||
|
>;
|
||||||
|
|
||||||
export class Actor implements IActor {
|
export class Actor implements IActor {
|
||||||
id?: string;
|
id?: string;
|
||||||
|
@ -72,13 +76,13 @@ export function usernameWithDomain(
|
||||||
return actor.preferredUsername;
|
return actor.preferredUsername;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function displayName(actor: IActor | undefined): string {
|
export function displayName(actor: IMinimalActorWithName | undefined): string {
|
||||||
return actor && actor.name != null && actor.name !== ""
|
return actor && actor.name != null && actor.name !== ""
|
||||||
? actor.name
|
? actor.name
|
||||||
: usernameWithDomain(actor);
|
: usernameWithDomain(actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function displayNameAndUsername(actor: IActor): string {
|
export function displayNameAndUsername(actor: IMinimalActorWithName): string {
|
||||||
if (actor.name) {
|
if (actor.name) {
|
||||||
return `${actor.name} (@${usernameWithDomain(actor)})`;
|
return `${actor.name} (@${usernameWithDomain(actor)})`;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
aria-required="true"
|
aria-required="true"
|
||||||
required
|
required
|
||||||
v-model="identity.name"
|
v-model="identity.name"
|
||||||
@input="(event) => updateUsername(event.target.value)"
|
@input="(event: any) => updateUsername(event.target.value)"
|
||||||
id="identity-display-name"
|
id="identity-display-name"
|
||||||
dir="auto"
|
dir="auto"
|
||||||
/>
|
/>
|
||||||
|
@ -125,7 +125,8 @@
|
||||||
tag="a"
|
tag="a"
|
||||||
icon-left="rss"
|
icon-left="rss"
|
||||||
@click="
|
@click="
|
||||||
(e: Event) => copyURL(e, tokenToURL(feedToken.token, 'atom'), 'atom')
|
(e: Event) =>
|
||||||
|
copyURL(e, tokenToURL(feedToken.token, 'atom'), 'atom')
|
||||||
"
|
"
|
||||||
:href="tokenToURL(feedToken.token, 'atom')"
|
:href="tokenToURL(feedToken.token, 'atom')"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
@ -142,7 +143,8 @@
|
||||||
<o-button
|
<o-button
|
||||||
tag="a"
|
tag="a"
|
||||||
@click="
|
@click="
|
||||||
(e: Event) => copyURL(e, tokenToURL(feedToken.token, 'ics'), 'ics')
|
(e: Event) =>
|
||||||
|
copyURL(e, tokenToURL(feedToken.token, 'ics'), 'ics')
|
||||||
"
|
"
|
||||||
icon-left="calendar-sync"
|
icon-left="calendar-sync"
|
||||||
:href="tokenToURL(feedToken.token, 'ics')"
|
:href="tokenToURL(feedToken.token, 'ics')"
|
||||||
|
|
|
@ -80,8 +80,9 @@ const Editor = defineAsyncComponent(
|
||||||
const props = defineProps<{ preferredUsername: string }>();
|
const props = defineProps<{ preferredUsername: string }>();
|
||||||
|
|
||||||
const { currentActor } = useCurrentActorClient();
|
const { currentActor } = useCurrentActorClient();
|
||||||
|
const preferredUsername = computed(() => props.preferredUsername);
|
||||||
|
|
||||||
const { group } = useGroup(props.preferredUsername);
|
const { group } = useGroup(preferredUsername);
|
||||||
|
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,7 @@
|
||||||
/>
|
/>
|
||||||
<form
|
<form
|
||||||
v-else-if="!discussionLoading && !error"
|
v-else-if="!discussionLoading && !error"
|
||||||
|
v-show="editTitleMode"
|
||||||
@submit.prevent="updateDiscussion"
|
@submit.prevent="updateDiscussion"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
|
@ -108,9 +109,12 @@
|
||||||
text: comment.text,
|
text: comment.text,
|
||||||
})
|
})
|
||||||
"
|
"
|
||||||
@delete-comment="(comment: IComment) => deleteComment({
|
@delete-comment="
|
||||||
|
(comment: IComment) =>
|
||||||
|
deleteComment({
|
||||||
commentId: comment.id as string,
|
commentId: comment.id as string,
|
||||||
})"
|
})
|
||||||
|
"
|
||||||
/>
|
/>
|
||||||
<o-button
|
<o-button
|
||||||
v-if="discussion.comments.elements.length < discussion.comments.total"
|
v-if="discussion.comments.elements.length < discussion.comments.total"
|
||||||
|
@ -152,7 +156,12 @@ import DiscussionComment from "@/components/Discussion/DiscussionComment.vue";
|
||||||
import { DELETE_COMMENT, UPDATE_COMMENT } from "@/graphql/comment";
|
import { DELETE_COMMENT, UPDATE_COMMENT } from "@/graphql/comment";
|
||||||
import RouteName from "../../router/name";
|
import RouteName from "../../router/name";
|
||||||
import { IComment } from "../../types/comment.model";
|
import { IComment } from "../../types/comment.model";
|
||||||
import { ApolloCache, FetchResult, gql } from "@apollo/client/core";
|
import {
|
||||||
|
ApolloCache,
|
||||||
|
FetchResult,
|
||||||
|
InMemoryCache,
|
||||||
|
gql,
|
||||||
|
} from "@apollo/client/core";
|
||||||
import { useMutation, useQuery } from "@vue/apollo-composable";
|
import { useMutation, useQuery } from "@vue/apollo-composable";
|
||||||
import {
|
import {
|
||||||
defineAsyncComponent,
|
defineAsyncComponent,
|
||||||
|
@ -198,11 +207,11 @@ const {
|
||||||
|
|
||||||
subscribeToMore({
|
subscribeToMore({
|
||||||
document: DISCUSSION_COMMENT_CHANGED,
|
document: DISCUSSION_COMMENT_CHANGED,
|
||||||
variables: {
|
variables: () => ({
|
||||||
slug: props.slug,
|
slug: props.slug,
|
||||||
page: page.value,
|
page: page.value,
|
||||||
limit: COMMENTS_PER_PAGE,
|
limit: COMMENTS_PER_PAGE,
|
||||||
},
|
}),
|
||||||
updateQuery(
|
updateQuery(
|
||||||
previousResult: any,
|
previousResult: any,
|
||||||
{ subscriptionData }: { subscriptionData: any }
|
{ subscriptionData }: { subscriptionData: any }
|
||||||
|
@ -253,7 +262,41 @@ const editTitleMode = ref(false);
|
||||||
const hasMoreComments = ref(true);
|
const hasMoreComments = ref(true);
|
||||||
const error = ref<string | null>(null);
|
const error = ref<string | null>(null);
|
||||||
|
|
||||||
const { mutate: replyToDiscussionMutation } = useMutation(REPLY_TO_DISCUSSION);
|
const { mutate: replyToDiscussionMutation } = useMutation<{
|
||||||
|
replyToDiscussion: IDiscussion;
|
||||||
|
}>(REPLY_TO_DISCUSSION, () => ({
|
||||||
|
update: (store: ApolloCache<InMemoryCache>, { data }: FetchResult) => {
|
||||||
|
const discussionData = store.readQuery<{
|
||||||
|
discussion: IDiscussion;
|
||||||
|
}>({
|
||||||
|
query: GET_DISCUSSION,
|
||||||
|
variables: {
|
||||||
|
slug: props.slug,
|
||||||
|
page: page.value,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
if (!discussionData) return;
|
||||||
|
const { discussion: discussionCached } = discussionData;
|
||||||
|
|
||||||
|
store.writeQuery({
|
||||||
|
query: GET_DISCUSSION,
|
||||||
|
variables: { slug: props.slug, page: page.value },
|
||||||
|
data: {
|
||||||
|
discussion: {
|
||||||
|
...discussionCached,
|
||||||
|
lastComment: data?.replyToDiscussion.lastComment,
|
||||||
|
comments: {
|
||||||
|
elements: [
|
||||||
|
...discussionCached.comments.elements,
|
||||||
|
data?.replyToDiscussion.lastComment,
|
||||||
|
],
|
||||||
|
total: discussionCached.comments.total + 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
const reply = () => {
|
const reply = () => {
|
||||||
if (newComment.value === "") return;
|
if (newComment.value === "") return;
|
||||||
|
|
|
@ -90,9 +90,10 @@ const page = useRouteQuery("page", 1, integerTransformer);
|
||||||
const DISCUSSIONS_PER_PAGE = 10;
|
const DISCUSSIONS_PER_PAGE = 10;
|
||||||
|
|
||||||
const props = defineProps<{ preferredUsername: string }>();
|
const props = defineProps<{ preferredUsername: string }>();
|
||||||
|
const preferredUsername = computed(() => props.preferredUsername);
|
||||||
|
|
||||||
const { group, loading: groupLoading } = useGroupDiscussionsList(
|
const { group, loading: groupLoading } = useGroupDiscussionsList(
|
||||||
props.preferredUsername,
|
preferredUsername.value,
|
||||||
{
|
{
|
||||||
discussionsPage: page.value,
|
discussionsPage: page.value,
|
||||||
discussionsLimit: DISCUSSIONS_PER_PAGE,
|
discussionsLimit: DISCUSSIONS_PER_PAGE,
|
||||||
|
@ -100,7 +101,7 @@ const { group, loading: groupLoading } = useGroupDiscussionsList(
|
||||||
);
|
);
|
||||||
|
|
||||||
const { person, loading: personLoading } = usePersonStatusGroup(
|
const { person, loading: personLoading } = usePersonStatusGroup(
|
||||||
props.preferredUsername
|
preferredUsername.value
|
||||||
);
|
);
|
||||||
|
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
|
@ -127,7 +127,7 @@
|
||||||
<label class="o-field__label field-label">{{ t("Description") }}</label>
|
<label class="o-field__label field-label">{{ t("Description") }}</label>
|
||||||
<editor-component
|
<editor-component
|
||||||
v-if="currentActor"
|
v-if="currentActor"
|
||||||
:current-actor="(currentActor as IPerson)"
|
:current-actor="currentActor as IPerson"
|
||||||
v-model="event.description"
|
v-model="event.description"
|
||||||
:aria-label="t('Event description body')"
|
:aria-label="t('Event description body')"
|
||||||
:placeholder="t('Describe your event')"
|
:placeholder="t('Describe your event')"
|
||||||
|
|
|
@ -368,7 +368,7 @@ const {
|
||||||
onError: onFetchEventError,
|
onError: onFetchEventError,
|
||||||
loading: eventLoading,
|
loading: eventLoading,
|
||||||
refetch: refetchEvent,
|
refetch: refetchEvent,
|
||||||
} = useFetchEvent(props.uuid);
|
} = useFetchEvent(propsUUID);
|
||||||
|
|
||||||
watch(propsUUID, (newUUid) => {
|
watch(propsUUID, (newUUid) => {
|
||||||
refetchEvent({ uuid: newUUid });
|
refetchEvent({ uuid: newUUid });
|
||||||
|
|
|
@ -188,7 +188,7 @@
|
||||||
<event-participation-card
|
<event-participation-card
|
||||||
v-for="participation in month[1]"
|
v-for="participation in month[1]"
|
||||||
:key="participation.id"
|
:key="participation.id"
|
||||||
:participation="(participation as IParticipant)"
|
:participation="participation as IParticipant"
|
||||||
:options="{ hideDate: false }"
|
:options="{ hideDate: false }"
|
||||||
@event-deleted="eventDeleted"
|
@event-deleted="eventDeleted"
|
||||||
class="participation"
|
class="participation"
|
||||||
|
|
|
@ -83,7 +83,9 @@
|
||||||
detail-key="id"
|
detail-key="id"
|
||||||
v-model:checked-rows="checkedRows"
|
v-model:checked-rows="checkedRows"
|
||||||
checkable
|
checkable
|
||||||
:is-row-checkable="(row: IParticipant) => row.role !== ParticipantRole.CREATOR"
|
:is-row-checkable="
|
||||||
|
(row: IParticipant) => row.role !== ParticipantRole.CREATOR
|
||||||
|
"
|
||||||
checkbox-position="left"
|
checkbox-position="left"
|
||||||
:show-detail-icon="false"
|
:show-detail-icon="false"
|
||||||
:loading="participantsLoading"
|
:loading="participantsLoading"
|
||||||
|
@ -108,10 +110,10 @@
|
||||||
:label="t('Participant')"
|
:label="t('Participant')"
|
||||||
v-slot="props"
|
v-slot="props"
|
||||||
>
|
>
|
||||||
<article>
|
<article class="flex gap-2">
|
||||||
<figure v-if="props.row.actor.avatar">
|
<figure v-if="props.row.actor.avatar">
|
||||||
<img
|
<img
|
||||||
class="rounded"
|
class="rounded-full w-12 h-12 object-cover"
|
||||||
:src="props.row.actor.avatar.url"
|
:src="props.row.actor.avatar.url"
|
||||||
alt=""
|
alt=""
|
||||||
height="48"
|
height="48"
|
||||||
|
@ -125,13 +127,15 @@
|
||||||
<AccountCircle v-else :size="48" />
|
<AccountCircle v-else :size="48" />
|
||||||
<div>
|
<div>
|
||||||
<div class="prose dark:prose-invert">
|
<div class="prose dark:prose-invert">
|
||||||
<span v-if="props.row.actor.preferredUsername !== 'anonymous'">
|
<p v-if="props.row.actor.preferredUsername !== 'anonymous'">
|
||||||
<span v-if="props.row.actor.name">{{
|
<span v-if="props.row.actor.name">{{
|
||||||
props.row.actor.name
|
props.row.actor.name
|
||||||
}}</span
|
}}</span
|
||||||
><br />
|
><br />
|
||||||
|
<span class="text-sm"
|
||||||
>@{{ usernameWithDomain(props.row.actor) }}</span
|
>@{{ usernameWithDomain(props.row.actor) }}</span
|
||||||
>
|
>
|
||||||
|
</p>
|
||||||
<span v-else>
|
<span v-else>
|
||||||
{{ t("Anonymous participant") }}
|
{{ t("Anonymous participant") }}
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
:default-sort-direction="'desc'"
|
:default-sort-direction="'desc'"
|
||||||
:default-sort="['insertedAt', 'desc']"
|
:default-sort="['insertedAt', 'desc']"
|
||||||
@page-change="loadMoreFollowers"
|
@page-change="loadMoreFollowers"
|
||||||
@sort="(field, order) => $emit('sort', field, order)"
|
@sort="(field: any, order: any) => $emit('sort', field, order)"
|
||||||
>
|
>
|
||||||
<o-table-column
|
<o-table-column
|
||||||
field="actor.preferredUsername"
|
field="actor.preferredUsername"
|
||||||
|
@ -136,6 +136,8 @@ import { Notifier } from "@/plugins/notifier";
|
||||||
|
|
||||||
const props = defineProps<{ preferredUsername: string }>();
|
const props = defineProps<{ preferredUsername: string }>();
|
||||||
|
|
||||||
|
const preferredUsername = computed(() => props.preferredUsername);
|
||||||
|
|
||||||
const page = useRouteQuery("page", 1, integerTransformer);
|
const page = useRouteQuery("page", 1, integerTransformer);
|
||||||
|
|
||||||
const pending = useRouteQuery("pending", false, booleanTransformer);
|
const pending = useRouteQuery("pending", false, booleanTransformer);
|
||||||
|
@ -241,5 +243,5 @@ const personMemberships = computed(
|
||||||
() => person.value?.memberships ?? { total: 0, elements: [] }
|
() => person.value?.memberships ?? { total: 0, elements: [] }
|
||||||
);
|
);
|
||||||
|
|
||||||
const { person } = usePersonStatusGroup(props.preferredUsername);
|
const { person } = usePersonStatusGroup(preferredUsername.value);
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -275,6 +275,7 @@ useHead({
|
||||||
});
|
});
|
||||||
|
|
||||||
const props = defineProps<{ preferredUsername: string }>();
|
const props = defineProps<{ preferredUsername: string }>();
|
||||||
|
const preferredUsername = computed(() => props.preferredUsername);
|
||||||
|
|
||||||
const emit = defineEmits(["sort"]);
|
const emit = defineEmits(["sort"]);
|
||||||
|
|
||||||
|
@ -440,7 +441,7 @@ const {
|
||||||
{
|
{
|
||||||
query: GROUP_MEMBERS,
|
query: GROUP_MEMBERS,
|
||||||
variables: {
|
variables: {
|
||||||
groupName: props.preferredUsername,
|
groupName: preferredUsername.value,
|
||||||
page: page.value,
|
page: page.value,
|
||||||
limit: MEMBERS_PER_PAGE,
|
limit: MEMBERS_PER_PAGE,
|
||||||
roles: roles.value,
|
roles: roles.value,
|
||||||
|
@ -547,5 +548,5 @@ const personMemberships = computed(
|
||||||
() => person.value?.memberships ?? { total: 0, elements: [] }
|
() => person.value?.memberships ?? { total: 0, elements: [] }
|
||||||
);
|
);
|
||||||
|
|
||||||
const { person } = usePersonStatusGroup(props.preferredUsername);
|
const { person } = usePersonStatusGroup(preferredUsername.value);
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -189,7 +189,7 @@
|
||||||
import PictureUpload from "@/components/PictureUpload.vue";
|
import PictureUpload from "@/components/PictureUpload.vue";
|
||||||
import { GroupVisibility, MemberRole, Openness } from "@/types/enums";
|
import { GroupVisibility, MemberRole, Openness } from "@/types/enums";
|
||||||
import { IGroup, usernameWithDomain, displayName } from "@/types/actor";
|
import { IGroup, usernameWithDomain, displayName } from "@/types/actor";
|
||||||
import { Address, IAddress } from "@/types/address.model";
|
import { IAddress } from "@/types/address.model";
|
||||||
import { ServerParseError } from "@apollo/client/link/http";
|
import { ServerParseError } from "@apollo/client/link/http";
|
||||||
import { ErrorResponse } from "@apollo/client/link/error";
|
import { ErrorResponse } from "@apollo/client/link/error";
|
||||||
import RouteName from "@/router/name";
|
import RouteName from "@/router/name";
|
||||||
|
@ -218,14 +218,11 @@ const FullAddressAutoComplete = defineAsyncComponent(
|
||||||
);
|
);
|
||||||
|
|
||||||
const props = defineProps<{ preferredUsername: string }>();
|
const props = defineProps<{ preferredUsername: string }>();
|
||||||
|
const preferredUsername = computed(() => props.preferredUsername);
|
||||||
|
|
||||||
const { currentActor } = useCurrentActorClient();
|
const { currentActor } = useCurrentActorClient();
|
||||||
|
|
||||||
const {
|
const { group, loading, onResult: onGroupResult } = useGroup(preferredUsername);
|
||||||
group,
|
|
||||||
loading,
|
|
||||||
onResult: onGroupResult,
|
|
||||||
} = useGroup(props.preferredUsername);
|
|
||||||
|
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
|
@ -395,7 +392,7 @@ const personMemberships = computed(
|
||||||
() => person.value?.memberships ?? { total: 0, elements: [] }
|
() => person.value?.memberships ?? { total: 0, elements: [] }
|
||||||
);
|
);
|
||||||
|
|
||||||
const { person } = usePersonStatusGroup(props.preferredUsername);
|
const { person } = usePersonStatusGroup(preferredUsername);
|
||||||
|
|
||||||
const dialog = inject<Dialog>("dialog");
|
const dialog = inject<Dialog>("dialog");
|
||||||
|
|
||||||
|
|
|
@ -703,22 +703,22 @@ const props = defineProps<{
|
||||||
preferredUsername: string;
|
preferredUsername: string;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
|
const preferredUsername = computed(() => props.preferredUsername);
|
||||||
|
|
||||||
const { anonymousReportsConfig } = useAnonymousReportsConfig();
|
const { anonymousReportsConfig } = useAnonymousReportsConfig();
|
||||||
const { currentActor } = useCurrentActorClient();
|
const { currentActor } = useCurrentActorClient();
|
||||||
const {
|
const {
|
||||||
group,
|
group,
|
||||||
loading: groupLoading,
|
loading: groupLoading,
|
||||||
refetch: refetchGroup,
|
refetch: refetchGroup,
|
||||||
} = useGroup(props.preferredUsername, { afterDateTime: new Date() });
|
} = useGroup(preferredUsername, { afterDateTime: new Date() });
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
const { group: discussionGroup } = useGroupDiscussionsList(
|
const { group: discussionGroup } = useGroupDiscussionsList(preferredUsername);
|
||||||
props.preferredUsername
|
const { group: resourcesGroup } = useGroupResourcesList(preferredUsername, {
|
||||||
);
|
resourcesPage: 1,
|
||||||
const { group: resourcesGroup } = useGroupResourcesList(
|
resourcesLimit: 3,
|
||||||
props.preferredUsername,
|
});
|
||||||
{ resourcesPage: 1, resourcesLimit: 3 }
|
|
||||||
);
|
|
||||||
|
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
<div v-show="authApplicationError">
|
<div v-show="authApplicationError">
|
||||||
<div
|
<div
|
||||||
class="rounded-lg text-white bg-mbz-danger shadow-xl my-6 p-4 flex items-center gap-2"
|
class="rounded-lg text-white bg-mbz-danger shadow-xl my-6 p-4 flex items-center gap-2"
|
||||||
v-if="authApplicationGraphError?.message === 'not_found'"
|
v-if="authApplicationGraphError?.code === 'application_not_found'"
|
||||||
>
|
>
|
||||||
<AlertCircle :size="42" />
|
<AlertCircle :size="42" />
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -27,10 +27,12 @@
|
||||||
>
|
>
|
||||||
<o-input
|
<o-input
|
||||||
autocapitalize="characters"
|
autocapitalize="characters"
|
||||||
@update:modelValue="(val: string) => inputs[i] = val.toUpperCase()"
|
@update:modelValue="
|
||||||
|
(val: string) => (inputs[i] = val.toUpperCase())
|
||||||
|
"
|
||||||
:useHtml5Validation="true"
|
:useHtml5Validation="true"
|
||||||
:id="`user-code-${i}`"
|
:id="`user-code-${i}`"
|
||||||
:ref="(el: Element) => userCodeInputs[i] = el"
|
:ref="(el: Element) => (userCodeInputs[i] = el)"
|
||||||
:modelValue="inputs[i]"
|
:modelValue="inputs[i]"
|
||||||
v-else
|
v-else
|
||||||
size="large"
|
size="large"
|
||||||
|
|
|
@ -169,9 +169,10 @@ const props = withDefaults(
|
||||||
}>(),
|
}>(),
|
||||||
{ isUpdate: false }
|
{ isUpdate: false }
|
||||||
);
|
);
|
||||||
|
const preferredUsername = computed(() => props.preferredUsername);
|
||||||
|
|
||||||
const { currentActor } = useCurrentActorClient();
|
const { currentActor } = useCurrentActorClient();
|
||||||
const { group } = useGroup(props.preferredUsername);
|
const { group } = useGroup(preferredUsername);
|
||||||
|
|
||||||
const { result: postResult, loading: postLoading } = useQuery<{
|
const { result: postResult, loading: postLoading } = useQuery<{
|
||||||
post: IPost;
|
post: IPost;
|
||||||
|
|
|
@ -36,9 +36,12 @@
|
||||||
:resources="resource.children.elements"
|
:resources="resource.children.elements"
|
||||||
:isRoot="resource.path === '/'"
|
:isRoot="resource.path === '/'"
|
||||||
:group="resource.actor"
|
:group="resource.actor"
|
||||||
@delete="(resourceID: string) => deleteResource({
|
@delete="
|
||||||
|
(resourceID: string) =>
|
||||||
|
deleteResource({
|
||||||
id: resourceID,
|
id: resourceID,
|
||||||
})"
|
})
|
||||||
|
"
|
||||||
@update="updateResource"
|
@update="updateResource"
|
||||||
@rename="handleRename"
|
@rename="handleRename"
|
||||||
@move="handleMove"
|
@move="handleMove"
|
||||||
|
|
|
@ -852,6 +852,7 @@ const arrayTransformer: RouteQueryTransformer<string[]> = {
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
tag?: string;
|
tag?: string;
|
||||||
}>();
|
}>();
|
||||||
|
const tag = computed(() => props.tag);
|
||||||
|
|
||||||
const page = useRouteQuery("page", 1, integerTransformer);
|
const page = useRouteQuery("page", 1, integerTransformer);
|
||||||
const eventPage = useRouteQuery("eventPage", 1, integerTransformer);
|
const eventPage = useRouteQuery("eventPage", 1, integerTransformer);
|
||||||
|
@ -864,7 +865,7 @@ const distance = useRouteQuery("distance", "10_km");
|
||||||
const when = useRouteQuery("when", "any");
|
const when = useRouteQuery("when", "any");
|
||||||
const contentType = useRouteQuery(
|
const contentType = useRouteQuery(
|
||||||
"contentType",
|
"contentType",
|
||||||
props.tag ? ContentType.EVENTS : ContentType.ALL,
|
tag.value ? ContentType.EVENTS : ContentType.ALL,
|
||||||
enumTransformer(ContentType)
|
enumTransformer(ContentType)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1286,7 +1287,7 @@ const { result: searchElementsResult, loading: searchLoading } = useQuery<{
|
||||||
searchGroups: Paginate<TypeNamed<IGroup>>;
|
searchGroups: Paginate<TypeNamed<IGroup>>;
|
||||||
}>(SEARCH_EVENTS_AND_GROUPS, () => ({
|
}>(SEARCH_EVENTS_AND_GROUPS, () => ({
|
||||||
term: searchDebounced.value,
|
term: searchDebounced.value,
|
||||||
tags: props.tag,
|
tags: tag.value,
|
||||||
location: geoHashLocation.value,
|
location: geoHashLocation.value,
|
||||||
beginsOn: start.value,
|
beginsOn: start.value,
|
||||||
endsOn: end.value,
|
endsOn: end.value,
|
||||||
|
|
|
@ -248,10 +248,12 @@
|
||||||
tag="a"
|
tag="a"
|
||||||
icon-left="rss"
|
icon-left="rss"
|
||||||
@click="
|
@click="
|
||||||
(e: Event) => copyURL(e, tokenToURL(feedToken.token, 'atom'), 'atom')
|
(e: Event) =>
|
||||||
|
copyURL(e, tokenToURL(feedToken.token, 'atom'), 'atom')
|
||||||
"
|
"
|
||||||
@keyup.enter="
|
@keyup.enter="
|
||||||
(e: Event) => copyURL(e, tokenToURL(feedToken.token, 'atom'), 'atom')
|
(e: Event) =>
|
||||||
|
copyURL(e, tokenToURL(feedToken.token, 'atom'), 'atom')
|
||||||
"
|
"
|
||||||
:href="tokenToURL(feedToken.token, 'atom')"
|
:href="tokenToURL(feedToken.token, 'atom')"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
@ -268,10 +270,12 @@
|
||||||
<o-button
|
<o-button
|
||||||
tag="a"
|
tag="a"
|
||||||
@click="
|
@click="
|
||||||
(e: Event) => copyURL(e, tokenToURL(feedToken.token, 'ics'), 'ics')
|
(e: Event) =>
|
||||||
|
copyURL(e, tokenToURL(feedToken.token, 'ics'), 'ics')
|
||||||
"
|
"
|
||||||
@keyup.enter="
|
@keyup.enter="
|
||||||
(e: Event) => copyURL(e, tokenToURL(feedToken.token, 'ics'), 'ics')
|
(e: Event) =>
|
||||||
|
copyURL(e, tokenToURL(feedToken.token, 'ics'), 'ics')
|
||||||
"
|
"
|
||||||
icon-left="calendar-sync"
|
icon-left="calendar-sync"
|
||||||
:href="tokenToURL(feedToken.token, 'ics')"
|
:href="tokenToURL(feedToken.token, 'ics')"
|
||||||
|
@ -348,7 +352,8 @@ const { result: loggedUserResult } = useQuery<{ loggedUser: IUser }>(
|
||||||
USER_NOTIFICATIONS
|
USER_NOTIFICATIONS
|
||||||
);
|
);
|
||||||
const loggedUser = computed(() => loggedUserResult.value?.loggedUser);
|
const loggedUser = computed(() => loggedUserResult.value?.loggedUser);
|
||||||
const feedTokens = computed(() =>
|
const feedTokens = computed(
|
||||||
|
() =>
|
||||||
loggedUser.value?.feedTokens.filter(
|
loggedUser.value?.feedTokens.filter(
|
||||||
(token: IFeedToken) => token.actor === null
|
(token: IFeedToken) => token.actor === null
|
||||||
)
|
)
|
||||||
|
|
|
@ -75,8 +75,9 @@ import { useI18n } from "vue-i18n";
|
||||||
import { useMutation } from "@vue/apollo-composable";
|
import { useMutation } from "@vue/apollo-composable";
|
||||||
|
|
||||||
const props = defineProps<{ preferredUsername: string }>();
|
const props = defineProps<{ preferredUsername: string }>();
|
||||||
|
const preferredUsername = computed(() => props.preferredUsername);
|
||||||
|
|
||||||
const { group } = useGroup(props.preferredUsername);
|
const { group } = useGroup(preferredUsername);
|
||||||
|
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
required
|
required
|
||||||
type="email"
|
type="email"
|
||||||
id="emailAddress"
|
id="emailAddress"
|
||||||
v-model="credentials.email"
|
v-model="emailValue"
|
||||||
/>
|
/>
|
||||||
</o-field>
|
</o-field>
|
||||||
<p class="flex flex-wrap gap-1 mt-2">
|
<p class="flex flex-wrap gap-1 mt-2">
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
{{
|
{{
|
||||||
$t(
|
$t(
|
||||||
"If an account with this email exists, we just sent another confirmation email to {email}",
|
"If an account with this email exists, we just sent another confirmation email to {email}",
|
||||||
{ email: credentials.email }
|
{ email: emailValue }
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</o-notification>
|
</o-notification>
|
||||||
|
@ -50,7 +50,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { RESEND_CONFIRMATION_EMAIL } from "@/graphql/auth";
|
import { RESEND_CONFIRMATION_EMAIL } from "@/graphql/auth";
|
||||||
import RouteName from "@/router/name";
|
import RouteName from "@/router/name";
|
||||||
import { reactive, ref, computed } from "vue";
|
import { ref, computed } from "vue";
|
||||||
import { useMutation } from "@vue/apollo-composable";
|
import { useMutation } from "@vue/apollo-composable";
|
||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
import { useHead } from "@vueuse/head";
|
import { useHead } from "@vueuse/head";
|
||||||
|
@ -62,10 +62,9 @@ useHead({
|
||||||
});
|
});
|
||||||
|
|
||||||
const props = withDefaults(defineProps<{ email: string }>(), { email: "" });
|
const props = withDefaults(defineProps<{ email: string }>(), { email: "" });
|
||||||
|
const defaultEmail = computed(() => props.email);
|
||||||
|
|
||||||
const credentials = reactive({
|
const emailValue = ref<string>(defaultEmail.value);
|
||||||
email: props.email,
|
|
||||||
});
|
|
||||||
|
|
||||||
const validationSent = ref(false);
|
const validationSent = ref(false);
|
||||||
const error = ref(false);
|
const error = ref(false);
|
||||||
|
@ -92,7 +91,7 @@ const resendConfirmationAction = async (e: Event): Promise<void> => {
|
||||||
error.value = false;
|
error.value = false;
|
||||||
|
|
||||||
resendConfirmationEmail({
|
resendConfirmationEmail({
|
||||||
email: credentials.email,
|
email: emailValue.value,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
aria-required="true"
|
aria-required="true"
|
||||||
required
|
required
|
||||||
type="email"
|
type="email"
|
||||||
v-model="credentials.email"
|
v-model="emailValue"
|
||||||
/>
|
/>
|
||||||
</o-field>
|
</o-field>
|
||||||
<p class="control">
|
<p class="control">
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
<o-notification variant="success" :closable="false" title="Success">
|
<o-notification variant="success" :closable="false" title="Success">
|
||||||
{{
|
{{
|
||||||
t("We just sent an email to {email}", {
|
t("We just sent an email to {email}", {
|
||||||
email: credentials.email,
|
email: emailValue,
|
||||||
})
|
})
|
||||||
}}
|
}}
|
||||||
</o-notification>
|
</o-notification>
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { SEND_RESET_PASSWORD } from "../../graphql/auth";
|
import { SEND_RESET_PASSWORD } from "../../graphql/auth";
|
||||||
import RouteName from "../../router/name";
|
import RouteName from "../../router/name";
|
||||||
import { computed, reactive, ref } from "vue";
|
import { computed, ref } from "vue";
|
||||||
import { useMutation } from "@vue/apollo-composable";
|
import { useMutation } from "@vue/apollo-composable";
|
||||||
import { useHead } from "@vueuse/head";
|
import { useHead } from "@vueuse/head";
|
||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
|
@ -74,9 +74,8 @@ const props = withDefaults(
|
||||||
{ email: "" }
|
{ email: "" }
|
||||||
);
|
);
|
||||||
|
|
||||||
const credentials = reactive<{ email: string }>({
|
const defaultEmail = computed(() => props.email);
|
||||||
email: props.email,
|
const emailValue = ref<string>(defaultEmail.value);
|
||||||
});
|
|
||||||
|
|
||||||
const validationSent = ref(false);
|
const validationSent = ref(false);
|
||||||
|
|
||||||
|
@ -110,7 +109,7 @@ const sendResetPasswordTokenAction = async (e: Event): Promise<void> => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
sendResetPasswordMutation({
|
sendResetPasswordMutation({
|
||||||
email: credentials.email,
|
email: emailValue.value,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
2404
js/yarn.lock
2404
js/yarn.lock
File diff suppressed because it is too large
Load diff
2048
js/yarn.nix
2048
js/yarn.nix
File diff suppressed because it is too large
Load diff
|
@ -70,7 +70,7 @@ defmodule Mobilizon.Federation.ActivityPub do
|
||||||
handle_existing_entity(url, entity, options)
|
handle_existing_entity(url, entity, options)
|
||||||
|
|
||||||
{:error, e} ->
|
{:error, e} ->
|
||||||
Logger.warn("Something failed while fetching url #{url} #{inspect(e)}")
|
Logger.warning("Something failed while fetching url #{url} #{inspect(e)}")
|
||||||
{:error, e}
|
{:error, e}
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|
|
@ -65,7 +65,7 @@ defmodule Mobilizon.Federation.ActivityPub.Fetcher do
|
||||||
{:error, :transmogrifier_error}
|
{:error, :transmogrifier_error}
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
Logger.warn("Object origin check failed")
|
Logger.warning("Object origin check failed")
|
||||||
{:error, :object_origin_check_failed}
|
{:error, :object_origin_check_failed}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ defmodule Mobilizon.Federation.ActivityPub.Fetcher do
|
||||||
"object" => data
|
"object" => data
|
||||||
})
|
})
|
||||||
else
|
else
|
||||||
Logger.warn("Object origin check failed")
|
Logger.warning("Object origin check failed")
|
||||||
{:error, :object_origin_check_failed}
|
{:error, :object_origin_check_failed}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -89,13 +89,13 @@ defmodule Mobilizon.Federation.ActivityPub.Permission do
|
||||||
_ ->
|
_ ->
|
||||||
case permission do
|
case permission do
|
||||||
:access ->
|
:access ->
|
||||||
Logger.warn("Actor #{actor_url} can't access #{object.url}")
|
Logger.warning("Actor #{actor_url} can't access #{object.url}")
|
||||||
|
|
||||||
:update ->
|
:update ->
|
||||||
Logger.warn("Actor #{actor_url} can't update #{object.url}")
|
Logger.warning("Actor #{actor_url} can't update #{object.url}")
|
||||||
|
|
||||||
:delete ->
|
:delete ->
|
||||||
Logger.warn("Actor #{actor_url} can't delete #{object.url}")
|
Logger.warning("Actor #{actor_url} can't delete #{object.url}")
|
||||||
end
|
end
|
||||||
|
|
||||||
false
|
false
|
||||||
|
|
|
@ -56,11 +56,11 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
|
||||||
{:ok, activity, follow}
|
{:ok, activity, follow}
|
||||||
else
|
else
|
||||||
{:error, :person_no_follow} ->
|
{:error, :person_no_follow} ->
|
||||||
Logger.warn("Only group and instances can be followed")
|
Logger.warning("Only group and instances can be followed")
|
||||||
{:error, :person_no_follow}
|
{:error, :person_no_follow}
|
||||||
|
|
||||||
{:error, e} ->
|
{:error, e} ->
|
||||||
Logger.warn("Error while following remote instance: #{inspect(e)}")
|
Logger.warning("Error while following remote instance: #{inspect(e)}")
|
||||||
{:error, e}
|
{:error, e}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -78,7 +78,7 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
|
||||||
{:ok, activity, follow}
|
{:ok, activity, follow}
|
||||||
else
|
else
|
||||||
{:error, e} ->
|
{:error, e} ->
|
||||||
Logger.warn("Error while unfollowing remote instance: #{inspect(e)}")
|
Logger.warning("Error while unfollowing remote instance: #{inspect(e)}")
|
||||||
{:error, e}
|
{:error, e}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -96,7 +96,7 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
|
||||||
{:ok, activity, follow}
|
{:ok, activity, follow}
|
||||||
else
|
else
|
||||||
{:error, e} ->
|
{:error, e} ->
|
||||||
Logger.warn("Error while accepting remote instance follow: #{inspect(e)}")
|
Logger.warning("Error while accepting remote instance follow: #{inspect(e)}")
|
||||||
{:error, e}
|
{:error, e}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -114,7 +114,7 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
|
||||||
{:ok, activity, follow}
|
{:ok, activity, follow}
|
||||||
else
|
else
|
||||||
{:error, e} ->
|
{:error, e} ->
|
||||||
Logger.warn("Error while rejecting remote instance follow: #{inspect(e)}")
|
Logger.warning("Error while rejecting remote instance follow: #{inspect(e)}")
|
||||||
{:error, e}
|
{:error, e}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -137,7 +137,7 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do
|
||||||
})
|
})
|
||||||
else
|
else
|
||||||
{:error, e} ->
|
{:error, e} ->
|
||||||
Logger.warn("Error while refreshing remote instance: #{inspect(e)}")
|
Logger.warning("Error while refreshing remote instance: #{inspect(e)}")
|
||||||
{:error, e}
|
{:error, e}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -203,7 +203,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
|
||||||
Actions.Delete.delete(entity, Relay.get_actor(), false)
|
Actions.Delete.delete(entity, Relay.get_actor(), false)
|
||||||
|
|
||||||
{:error, err} ->
|
{:error, err} ->
|
||||||
Logger.warn("Error while fetching object from URL: #{inspect(err)}")
|
Logger.warning("Error while fetching object from URL: #{inspect(err)}")
|
||||||
:error
|
:error
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -219,11 +219,11 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
|
||||||
{:ok, activity, object}
|
{:ok, activity, object}
|
||||||
else
|
else
|
||||||
{:error, :person_no_follow} ->
|
{:error, :person_no_follow} ->
|
||||||
Logger.warn("Only group and instances can be followed")
|
Logger.warning("Only group and instances can be followed")
|
||||||
:error
|
:error
|
||||||
|
|
||||||
{:error, e} ->
|
{:error, e} ->
|
||||||
Logger.warn("Unable to handle Follow activity #{inspect(e)}")
|
Logger.warning("Unable to handle Follow activity #{inspect(e)}")
|
||||||
:error
|
:error
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -325,14 +325,14 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
|
||||||
:error
|
:error
|
||||||
|
|
||||||
{:object_not_found, nil} ->
|
{:object_not_found, nil} ->
|
||||||
Logger.warn(
|
Logger.warning(
|
||||||
"Unable to process Accept activity #{inspect(id)}. Object #{inspect(accepted_object)} wasn't found."
|
"Unable to process Accept activity #{inspect(id)}. Object #{inspect(accepted_object)} wasn't found."
|
||||||
)
|
)
|
||||||
|
|
||||||
:error
|
:error
|
||||||
|
|
||||||
e ->
|
e ->
|
||||||
Logger.warn(
|
Logger.warning(
|
||||||
"Unable to process Accept activity #{inspect(id)} for object #{inspect(accepted_object)} only returned #{inspect(e)}"
|
"Unable to process Accept activity #{inspect(id)} for object #{inspect(accepted_object)} only returned #{inspect(e)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -353,14 +353,14 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
|
||||||
{:ok, activity, object}
|
{:ok, activity, object}
|
||||||
else
|
else
|
||||||
{:object_not_found, nil} ->
|
{:object_not_found, nil} ->
|
||||||
Logger.warn(
|
Logger.warning(
|
||||||
"Unable to process Reject activity #{inspect(id)}. Object #{inspect(rejected_object)} wasn't found."
|
"Unable to process Reject activity #{inspect(id)}. Object #{inspect(rejected_object)} wasn't found."
|
||||||
)
|
)
|
||||||
|
|
||||||
:error
|
:error
|
||||||
|
|
||||||
e ->
|
e ->
|
||||||
Logger.warn(
|
Logger.warning(
|
||||||
"Unable to process Reject activity #{inspect(id)} for object #{inspect(rejected_object)} only returned #{inspect(e)}"
|
"Unable to process Reject activity #{inspect(id)} for object #{inspect(rejected_object)} only returned #{inspect(e)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -405,7 +405,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
|
||||||
{:ok, activity, new_actor}
|
{:ok, activity, new_actor}
|
||||||
else
|
else
|
||||||
{:error, :update_not_allowed} ->
|
{:error, :update_not_allowed} ->
|
||||||
Logger.warn(
|
Logger.warning(
|
||||||
"Activity tried to update an actor that's local or not a group: #{inspect(params)}"
|
"Activity tried to update an actor that's local or not a group: #{inspect(params)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -485,7 +485,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
|
||||||
{:ok, activity, new_post}
|
{:ok, activity, new_post}
|
||||||
else
|
else
|
||||||
{:origin_check, _} ->
|
{:origin_check, _} ->
|
||||||
Logger.warn("Actor tried to update a post but doesn't has the required role")
|
Logger.warning("Actor tried to update a post but doesn't has the required role")
|
||||||
:error
|
:error
|
||||||
|
|
||||||
_e ->
|
_e ->
|
||||||
|
@ -692,7 +692,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
|
||||||
{:ok, activity, object}
|
{:ok, activity, object}
|
||||||
else
|
else
|
||||||
{:only_organizer, true} ->
|
{:only_organizer, true} ->
|
||||||
Logger.warn(
|
Logger.warning(
|
||||||
"Actor #{inspect(actor)} tried to leave event #{inspect(object)} but it was the only organizer so we didn't detach it"
|
"Actor #{inspect(actor)} tried to leave event #{inspect(object)} but it was the only organizer so we didn't detach it"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -742,14 +742,14 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
|
||||||
Actions.Remove.remove(member, group, moderator, false)
|
Actions.Remove.remove(member, group, moderator, false)
|
||||||
else
|
else
|
||||||
{:is_admin, {:ok, %Member{}}} ->
|
{:is_admin, {:ok, %Member{}}} ->
|
||||||
Logger.warn(
|
Logger.warning(
|
||||||
"Person #{inspect(actor)} is not an admin from #{inspect(origin)} and can't remove member #{inspect(object)}"
|
"Person #{inspect(actor)} is not an admin from #{inspect(origin)} and can't remove member #{inspect(object)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
{:error, "Member already removed"}
|
{:error, "Member already removed"}
|
||||||
|
|
||||||
{:is_member, {:ok, %Member{role: :rejected}}} ->
|
{:is_member, {:ok, %Member{role: :rejected}}} ->
|
||||||
Logger.warn("Member #{inspect(object)} already removed from #{inspect(origin)}")
|
Logger.warning("Member #{inspect(object)} already removed from #{inspect(origin)}")
|
||||||
{:error, "Member already removed"}
|
{:error, "Member already removed"}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -949,7 +949,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
|
||||||
{:ok, activity, participant}
|
{:ok, activity, participant}
|
||||||
else
|
else
|
||||||
{:join_event, {:ok, _activity, %Participant{role: :rejected}}} ->
|
{:join_event, {:ok, _activity, %Participant{role: :rejected}}} ->
|
||||||
Logger.warn(
|
Logger.warning(
|
||||||
"Tried to handle an Reject activity on a Join activity with a event object but the participant is already rejected"
|
"Tried to handle an Reject activity on a Join activity with a event object but the participant is already rejected"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1100,7 +1100,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
|
||||||
{:ok, object}
|
{:ok, object}
|
||||||
|
|
||||||
err ->
|
err ->
|
||||||
Logger.warn("Error while fetching #{inspect(object)}")
|
Logger.warning("Error while fetching #{inspect(object)}")
|
||||||
{:error, err}
|
{:error, err}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1242,7 +1242,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
|
||||||
Permission.can_delete_group_object?(actor, entity) do
|
Permission.can_delete_group_object?(actor, entity) do
|
||||||
Actions.Delete.delete(entity, actor, false)
|
Actions.Delete.delete(entity, actor, false)
|
||||||
else
|
else
|
||||||
Logger.warn("Object origin check failed")
|
Logger.warning("Object origin check failed")
|
||||||
:error
|
:error
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -202,7 +202,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Comment do
|
||||||
|
|
||||||
# Anything else is kind of a MP
|
# Anything else is kind of a MP
|
||||||
{:error, parent} ->
|
{:error, parent} ->
|
||||||
Logger.warn("Parent object is something we don't handle")
|
Logger.warning("Parent object is something we don't handle")
|
||||||
Logger.debug(inspect(parent))
|
Logger.debug(inspect(parent))
|
||||||
data
|
data
|
||||||
end
|
end
|
||||||
|
|
|
@ -57,7 +57,7 @@ defmodule Mobilizon.GraphQL.API.Reports do
|
||||||
end
|
end
|
||||||
|
|
||||||
if antispam_response != :ok do
|
if antispam_response != :ok do
|
||||||
Logger.warn("Antispam response has been #{inspect(antispam_response)}")
|
Logger.warning("Antispam response has been #{inspect(antispam_response)}")
|
||||||
end
|
end
|
||||||
|
|
||||||
{:ok, report}
|
{:ok, report}
|
||||||
|
|
|
@ -55,7 +55,14 @@ defmodule Mobilizon.GraphQL.Authorization.AppScope do
|
||||||
:"read:event",
|
:"read:event",
|
||||||
:"read:event:participants",
|
:"read:event:participants",
|
||||||
:"read:event:participants:export",
|
:"read:event:participants:export",
|
||||||
|
# User permissions
|
||||||
|
:"read:user:media",
|
||||||
:"read:user:settings",
|
:"read:user:settings",
|
||||||
|
:"read:user:activity_settings",
|
||||||
|
:"read:user:participations",
|
||||||
|
:"read:user:memberships",
|
||||||
|
:"read:user:draft_events",
|
||||||
|
:"read:user:group_suggested_events",
|
||||||
# Profile permissions
|
# Profile permissions
|
||||||
:"read:profile",
|
:"read:profile",
|
||||||
:"read:profile:organized_events",
|
:"read:profile:organized_events",
|
||||||
|
|
|
@ -123,7 +123,7 @@ defmodule Mobilizon.GraphQL.Error do
|
||||||
defp metadata(:unknown), do: {500, dgettext("errors", "Something went wrong")}
|
defp metadata(:unknown), do: {500, dgettext("errors", "Something went wrong")}
|
||||||
|
|
||||||
defp metadata(code) do
|
defp metadata(code) do
|
||||||
Logger.warn("Unhandled error code: #{inspect(code)}")
|
Logger.warning("Unhandled error code: #{inspect(code)}")
|
||||||
{422, to_string(code)}
|
{422, to_string(code)}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ defmodule Mobilizon.GraphQL.Schema.UserType do
|
||||||
|
|
||||||
field(:participations, :paginated_participant_list,
|
field(:participations, :paginated_participant_list,
|
||||||
description: "The list of participations this user has",
|
description: "The list of participations this user has",
|
||||||
meta: [private: true]
|
meta: [private: true, rule: :"read:user:participations"]
|
||||||
) do
|
) do
|
||||||
arg(:after_datetime, :datetime, description: "Filter participations by event start datetime")
|
arg(:after_datetime, :datetime, description: "Filter participations by event start datetime")
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ defmodule Mobilizon.GraphQL.Schema.UserType do
|
||||||
|
|
||||||
field(:memberships, :paginated_member_list,
|
field(:memberships, :paginated_member_list,
|
||||||
description: "The list of memberships for this user",
|
description: "The list of memberships for this user",
|
||||||
meta: [private: true]
|
meta: [private: true, rule: :"read:user:memberships"]
|
||||||
) do
|
) do
|
||||||
arg(:name, :string, description: "A name to filter members by")
|
arg(:name, :string, description: "A name to filter members by")
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ defmodule Mobilizon.GraphQL.Schema.UserType do
|
||||||
|
|
||||||
field(:drafts, :paginated_event_list,
|
field(:drafts, :paginated_event_list,
|
||||||
description: "The list of draft events this user has created",
|
description: "The list of draft events this user has created",
|
||||||
meta: [private: true]
|
meta: [private: true, rule: :"read:user:draft_events"]
|
||||||
) do
|
) do
|
||||||
arg(:page, :integer,
|
arg(:page, :integer,
|
||||||
default_value: 1,
|
default_value: 1,
|
||||||
|
@ -120,7 +120,7 @@ defmodule Mobilizon.GraphQL.Schema.UserType do
|
||||||
|
|
||||||
field(:followed_group_events, :paginated_followed_group_events,
|
field(:followed_group_events, :paginated_followed_group_events,
|
||||||
description: "The suggested events from the groups this user follows",
|
description: "The suggested events from the groups this user follows",
|
||||||
meta: [private: true]
|
meta: [private: true, rule: :"read:user:group_suggested_events"]
|
||||||
) do
|
) do
|
||||||
arg(:page, :integer,
|
arg(:page, :integer,
|
||||||
default_value: 1,
|
default_value: 1,
|
||||||
|
@ -141,7 +141,7 @@ defmodule Mobilizon.GraphQL.Schema.UserType do
|
||||||
|
|
||||||
field(:settings, :user_settings,
|
field(:settings, :user_settings,
|
||||||
description: "The list of settings for this user",
|
description: "The list of settings for this user",
|
||||||
meta: [private: true]
|
meta: [private: true, rule: :"read:user:settings"]
|
||||||
) do
|
) do
|
||||||
resolve(&User.user_settings/3)
|
resolve(&User.user_settings/3)
|
||||||
end
|
end
|
||||||
|
@ -158,7 +158,7 @@ defmodule Mobilizon.GraphQL.Schema.UserType do
|
||||||
|
|
||||||
field(:media, :paginated_media_list,
|
field(:media, :paginated_media_list,
|
||||||
description: "The user's media objects",
|
description: "The user's media objects",
|
||||||
meta: [private: true]
|
meta: [private: true, rule: :"read:user:media"]
|
||||||
) do
|
) do
|
||||||
arg(:page, :integer,
|
arg(:page, :integer,
|
||||||
default_value: 1,
|
default_value: 1,
|
||||||
|
@ -176,7 +176,7 @@ defmodule Mobilizon.GraphQL.Schema.UserType do
|
||||||
|
|
||||||
field(:activity_settings, list_of(:activity_setting),
|
field(:activity_settings, list_of(:activity_setting),
|
||||||
description: "The user's activity settings",
|
description: "The user's activity settings",
|
||||||
meta: [private: true]
|
meta: [private: true, rule: :"read:user:activity_settings"]
|
||||||
) do
|
) do
|
||||||
resolve(&ActivitySettings.user_activity_settings/3)
|
resolve(&ActivitySettings.user_activity_settings/3)
|
||||||
end
|
end
|
||||||
|
|
|
@ -87,7 +87,7 @@ defmodule Mix.Tasks.Mobilizon.Actors.Refresh do
|
||||||
rescue
|
rescue
|
||||||
_ ->
|
_ ->
|
||||||
if verbose do
|
if verbose do
|
||||||
Logger.warn("Failed to refresh #{username}")
|
Logger.warning("Failed to refresh #{username}")
|
||||||
end
|
end
|
||||||
|
|
||||||
nil
|
nil
|
||||||
|
|
|
@ -18,7 +18,7 @@ defmodule Mobilizon.Applications.ApplicationToken do
|
||||||
end
|
end
|
||||||
|
|
||||||
@required_attrs [:user_id, :application_id, :scope]
|
@required_attrs [:user_id, :application_id, :scope]
|
||||||
@optional_attrs [:authorization_code]
|
@optional_attrs [:authorization_code, :status]
|
||||||
@attrs @required_attrs ++ @optional_attrs
|
@attrs @required_attrs ++ @optional_attrs
|
||||||
|
|
||||||
@doc false
|
@doc false
|
||||||
|
|
|
@ -10,7 +10,7 @@ defmodule Mobilizon.Service.GitStatus do
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
# Fallback on Mix version
|
# Fallback on Mix version
|
||||||
Logger.warn("Could not read git commit hash, using Mix version code instead.")
|
Logger.warning("Could not read git commit hash, using Mix version code instead.")
|
||||||
Mix.Project.config()[:version]
|
Mix.Project.config()[:version]
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,7 @@ defmodule Mobilizon.Service.Notifier.Email do
|
||||||
end
|
end
|
||||||
|
|
||||||
defp can_send_activity?(activity, user, options) do
|
defp can_send_activity?(activity, user, options) do
|
||||||
Logger.warn(
|
Logger.warning(
|
||||||
"Can't check if user #{inspect(user)} can be sent an activity (#{inspect(activity)}) (#{inspect(options)})"
|
"Can't check if user #{inspect(user)} can be sent an activity (#{inspect(activity)}) (#{inspect(options)})"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ defmodule Mobilizon.Web.Auth.Guardian do
|
||||||
end
|
end
|
||||||
rescue
|
rescue
|
||||||
e in Ecto.NoResultsError ->
|
e in Ecto.NoResultsError ->
|
||||||
Logger.warn("Received token claim for non existing user: #{inspect(e)}")
|
Logger.warning("Received token claim for non existing user: #{inspect(e)}")
|
||||||
{:error, :no_result}
|
{:error, :no_result}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -33,7 +33,7 @@ defmodule Mobilizon.Web.AuthController do
|
||||||
%{assigns: %{ueberauth_failure: fails}} = conn,
|
%{assigns: %{ueberauth_failure: fails}} = conn,
|
||||||
%{"provider" => provider} = _params
|
%{"provider" => provider} = _params
|
||||||
) do
|
) do
|
||||||
Logger.warn("Unable to login user with #{provider} #{inspect(fails)}")
|
Logger.warning("Unable to login user with #{provider} #{inspect(fails)}")
|
||||||
|
|
||||||
redirect_to_error(conn, :unknown_error, provider)
|
redirect_to_error(conn, :unknown_error, provider)
|
||||||
end
|
end
|
||||||
|
@ -75,7 +75,7 @@ defmodule Mobilizon.Web.AuthController do
|
||||||
})
|
})
|
||||||
else
|
else
|
||||||
err ->
|
err ->
|
||||||
Logger.warn("Unable to login user \"#{email}\" #{inspect(err)}")
|
Logger.warning("Unable to login user \"#{email}\" #{inspect(err)}")
|
||||||
redirect_to_error(conn, :unknown_error, strategy)
|
redirect_to_error(conn, :unknown_error, strategy)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -65,7 +65,7 @@ defmodule Mobilizon.Web.FeedController do
|
||||||
{:error, :not_found}
|
{:error, :not_found}
|
||||||
|
|
||||||
err ->
|
err ->
|
||||||
Logger.warn("Unable to find feed data cached for key #{key}, returned #{inspect(err)}")
|
Logger.warning("Unable to find feed data cached for key #{key}, returned #{inspect(err)}")
|
||||||
{:error, :not_found}
|
{:error, :not_found}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -89,7 +89,7 @@ defmodule Mobilizon.Web.FeedController do
|
||||||
{:error, :not_found}
|
{:error, :not_found}
|
||||||
|
|
||||||
err ->
|
err ->
|
||||||
Logger.warn("Unable to find feed data cached for key #{key}, returned #{inspect(err)}")
|
Logger.warning("Unable to find feed data cached for key #{key}, returned #{inspect(err)}")
|
||||||
{:error, :not_found}
|
{:error, :not_found}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -70,7 +70,7 @@ defmodule Mobilizon.Web.Email.Group do
|
||||||
%Actor{type: :Group, preferred_username: group_username},
|
%Actor{type: :Group, preferred_username: group_username},
|
||||||
user
|
user
|
||||||
) do
|
) do
|
||||||
Logger.warn(
|
Logger.warning(
|
||||||
"Unable to notify group follower user #{user.email} for event #{event_uuid} from group #{group_username}"
|
"Unable to notify group follower user #{user.email} for event #{event_uuid} from group #{group_username}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -126,7 +126,7 @@ defmodule Mobilizon.Web.ReverseProxy do
|
||||||
|> halt()
|
|> halt()
|
||||||
|
|
||||||
{:is_url, false} ->
|
{:is_url, false} ->
|
||||||
Logger.warn("Tried to reverse proxy URL #{inspect(url)}")
|
Logger.warning("Tried to reverse proxy URL #{inspect(url)}")
|
||||||
|
|
||||||
conn
|
conn
|
||||||
|> error_or_redirect(url, 400, "Request failed", opts)
|
|> error_or_redirect(url, 400, "Request failed", opts)
|
||||||
|
@ -202,7 +202,7 @@ defmodule Mobilizon.Web.ReverseProxy do
|
||||||
halt(conn)
|
halt(conn)
|
||||||
|
|
||||||
{:error, error, conn} ->
|
{:error, error, conn} ->
|
||||||
Logger.warn(
|
Logger.warning(
|
||||||
"#{__MODULE__} request to #{url} failed while reading/chunking: #{inspect(error)}"
|
"#{__MODULE__} request to #{url} failed while reading/chunking: #{inspect(error)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
<%= gettext "Your participation to %{event} on %{instance} has been cancelled!", event: @event.title, instance: @instance_name %>
|
<%= gettext "Your participation to %{event} on %{instance} has been cancelled!", event: @event.title, instance: @instance_name %>
|
||||||
==
|
==
|
||||||
<%= gettext "Your instance's moderation team has decided to suspend %{actor_name} (%{actor_address}). All of their events have been removed and your participation to event %{event} cancelled.", actor_name: @actor.name || @actor.preferred_username, event: @event.title, actor_address: if @actor.domain, do: "@#{@actor.preferred_username}@#{@actor.domain}", else: "@#{@actor.preferred_username}" %>
|
<%= gettext "Your instance's moderation team has decided to suspend %{actor_name} (%{actor_address}). All of their events have been removed and your participation to event %{event} cancelled.", actor_name: @actor.name || @actor.preferred_username, event: @event.title, actor_address: preferred_username_and_domain(@actor) %>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<%= gettext "The group %{group} has been suspended on %{instance}!", group: (@group.name || @group.preferred_username), instance: @instance_name %>
|
<%= gettext "The group %{group} has been suspended on %{instance}!", group: (@group.name || @group.preferred_username), instance: @instance_name %>
|
||||||
==
|
==
|
||||||
<%= gettext "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group.", group_name: @group.name, group_address: if @group.domain, do: "@#{@group.preferred_username}@#{@group.domain}", else: "@#{@group.preferred_username}" %>
|
<%= gettext "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group.", group_name: @group.name, group_address: preferred_username_and_domain(@group) %>
|
||||||
<%= if is_nil(@group.domain) do %>
|
<%= if is_nil(@group.domain) do %>
|
||||||
<%= gettext "As this group was located on this instance, all of it's data has been irretrievably deleted." %>
|
<%= gettext "As this group was located on this instance, all of it's data has been irretrievably deleted." %>
|
||||||
<% else %>
|
<% else %>
|
||||||
|
|
|
@ -25,7 +25,7 @@ defmodule Mobilizon.Web.Upload.Filter.AnalyzeMetadata do
|
||||||
rescue
|
rescue
|
||||||
e in ErlangError ->
|
e in ErlangError ->
|
||||||
require Logger
|
require Logger
|
||||||
Logger.warn("#{__MODULE__}: #{inspect(e)}")
|
Logger.warning("#{__MODULE__}: #{inspect(e)}")
|
||||||
{:ok, :noop}
|
{:ok, :noop}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ defmodule Mobilizon.Web.Upload.Filter.BlurHash do
|
||||||
{:ok, :filtered, %Upload{upload | blurhash: generate_blurhash(file)}}
|
{:ok, :filtered, %Upload{upload | blurhash: generate_blurhash(file)}}
|
||||||
rescue
|
rescue
|
||||||
e in ErlangError ->
|
e in ErlangError ->
|
||||||
Logger.warn("#{__MODULE__}: #{inspect(e)}")
|
Logger.warning("#{__MODULE__}: #{inspect(e)}")
|
||||||
{:ok, :noop}
|
{:ok, :noop}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -28,11 +28,11 @@ defmodule Mobilizon.Web.Upload.Filter.Optimize do
|
||||||
{:ok, :filtered}
|
{:ok, :filtered}
|
||||||
|
|
||||||
{:error, :file_not_found} ->
|
{:error, :file_not_found} ->
|
||||||
Logger.warn("Unable to optimize file #{file}. File was not found")
|
Logger.warning("Unable to optimize file #{file}. File was not found")
|
||||||
{:error, :file_not_found}
|
{:error, :file_not_found}
|
||||||
|
|
||||||
{:error, err} ->
|
{:error, err} ->
|
||||||
Logger.warn(
|
Logger.warning(
|
||||||
"Unable to optimize file #{file}. The return from the process was #{inspect(err)}"
|
"Unable to optimize file #{file}. The return from the process was #{inspect(err)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ defmodule Mobilizon.Web.ErrorView do
|
||||||
# template is found, let's render it as 500
|
# template is found, let's render it as 500
|
||||||
def template_not_found(template, assigns) do
|
def template_not_found(template, assigns) do
|
||||||
require Logger
|
require Logger
|
||||||
Logger.warn("Template #{inspect(template)} not found")
|
Logger.warning("Template #{inspect(template)} not found")
|
||||||
render("500.html", assigns)
|
render("500.html", assigns)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
6
mix.exs
6
mix.exs
|
@ -160,7 +160,7 @@ defmodule Mobilizon.Mixfile do
|
||||||
{:absinthe, "~> 1.6"},
|
{:absinthe, "~> 1.6"},
|
||||||
{:absinthe_phoenix, "~> 2.0.1"},
|
{:absinthe_phoenix, "~> 2.0.1"},
|
||||||
{:absinthe_plug, "~> 1.5.0"},
|
{:absinthe_plug, "~> 1.5.0"},
|
||||||
{:dataloader, "~> 1.0.6"},
|
{:dataloader, "~> 2.0"},
|
||||||
{:plug_cowboy, "~> 2.0"},
|
{:plug_cowboy, "~> 2.0"},
|
||||||
{:atomex, "~> 0.4"},
|
{:atomex, "~> 0.4"},
|
||||||
{:cachex, "~> 3.1"},
|
{:cachex, "~> 3.1"},
|
||||||
|
@ -172,7 +172,7 @@ defmodule Mobilizon.Mixfile do
|
||||||
{:ex_cldr_dates_times, "~> 2.2"},
|
{:ex_cldr_dates_times, "~> 2.2"},
|
||||||
{:ex_cldr_plugs, "~> 1.0"},
|
{:ex_cldr_plugs, "~> 1.0"},
|
||||||
{:ex_optimizer, "~> 0.1"},
|
{:ex_optimizer, "~> 0.1"},
|
||||||
{:progress_bar, "~> 2.0"},
|
{:progress_bar, "~> 3.0"},
|
||||||
{:oban, "~> 2.2"},
|
{:oban, "~> 2.2"},
|
||||||
{:floki, "~> 0.31"},
|
{:floki, "~> 0.31"},
|
||||||
{:ip_reserved, "~> 0.1.0"},
|
{:ip_reserved, "~> 0.1.0"},
|
||||||
|
@ -202,7 +202,7 @@ defmodule Mobilizon.Mixfile do
|
||||||
{:paasaa, "~> 0.6.0"},
|
{:paasaa, "~> 0.6.0"},
|
||||||
{:nimble_csv, "~> 1.1"},
|
{:nimble_csv, "~> 1.1"},
|
||||||
{:export, "~> 0.1.0"},
|
{:export, "~> 0.1.0"},
|
||||||
{:erlport, github: "tcitworld/erlport", branch: "0.10.1-compat", override: true},
|
{:erlport, "~> 0.11.0"},
|
||||||
{:tz_world, "~> 1.0"},
|
{:tz_world, "~> 1.0"},
|
||||||
{:tzdata, "~> 1.1"},
|
{:tzdata, "~> 1.1"},
|
||||||
{:codepagex, "~> 0.1.6"},
|
{:codepagex, "~> 0.1.6"},
|
||||||
|
|
50
mix.lock
50
mix.lock
|
@ -1,5 +1,5 @@
|
||||||
%{
|
%{
|
||||||
"absinthe": {:hex, :absinthe, "1.7.1", "aca6f64994f0914628429ddbdfbf24212747b51780dae189dd98909da911757b", [:mix], [{:dataloader, "~> 1.0.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 1.2.2 or ~> 1.3.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c0c4dbd93881fa3bfbad255608234b104b877c2a901850c1fe8c53b408a72a57"},
|
"absinthe": {:hex, :absinthe, "1.7.5", "a15054f05738e766f7cc7fd352887dfd5e61cec371fb4741cca37c3359ff74ac", [:mix], [{:dataloader, "~> 1.0.0 or ~> 2.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 1.2.2 or ~> 1.3.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:opentelemetry_process_propagator, "~> 0.2.1", [hex: :opentelemetry_process_propagator, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "22a9a38adca26294ad0ee91226168f5d215b401efd770b8a1b8fd9c9b21ec316"},
|
||||||
"absinthe_phoenix": {:hex, :absinthe_phoenix, "2.0.2", "e607b438db900049b9b3760f8ecd0591017a46122fffed7057bf6989020992b5", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:absinthe_plug, "~> 1.5", [hex: :absinthe_plug, repo: "hexpm", optional: false]}, {:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.5", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.13 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}], "hexpm", "d36918925c380dc7d2ed7d039c9a3b4182ec36723f7417a68745ade5aab22f8d"},
|
"absinthe_phoenix": {:hex, :absinthe_phoenix, "2.0.2", "e607b438db900049b9b3760f8ecd0591017a46122fffed7057bf6989020992b5", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:absinthe_plug, "~> 1.5", [hex: :absinthe_plug, repo: "hexpm", optional: false]}, {:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.5", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.13 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}], "hexpm", "d36918925c380dc7d2ed7d039c9a3b4182ec36723f7417a68745ade5aab22f8d"},
|
||||||
"absinthe_plug": {:hex, :absinthe_plug, "1.5.8", "38d230641ba9dca8f72f1fed2dfc8abd53b3907d1996363da32434ab6ee5d6ab", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bbb04176647b735828861e7b2705465e53e2cf54ccf5a73ddd1ebd855f996e5a"},
|
"absinthe_plug": {:hex, :absinthe_plug, "1.5.8", "38d230641ba9dca8f72f1fed2dfc8abd53b3907d1996363da32434ab6ee5d6ab", [:mix], [{:absinthe, "~> 1.5", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bbb04176647b735828861e7b2705465e53e2cf54ccf5a73ddd1ebd855f996e5a"},
|
||||||
"argon2_elixir": {:hex, :argon2_elixir, "3.1.0", "4135e0a1b4ff800d42c85aa663e068efa3cb356297189b5b65caa992db8ec8cf", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "c08feae0ee0292165d1b945003363c7cd8523d002e0483c627dfca930291dd73"},
|
"argon2_elixir": {:hex, :argon2_elixir, "3.1.0", "4135e0a1b4ff800d42c85aa663e068efa3cb356297189b5b65caa992db8ec8cf", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "c08feae0ee0292165d1b945003363c7cd8523d002e0483c627dfca930291dd73"},
|
||||||
|
@ -19,33 +19,33 @@
|
||||||
"cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"},
|
"cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"},
|
||||||
"credo": {:hex, :credo, "1.7.0", "6119bee47272e85995598ee04f2ebbed3e947678dee048d10b5feca139435f75", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "6839fcf63d1f0d1c0f450abc8564a57c43d644077ab96f2934563e68b8a769d7"},
|
"credo": {:hex, :credo, "1.7.0", "6119bee47272e85995598ee04f2ebbed3e947678dee048d10b5feca139435f75", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "6839fcf63d1f0d1c0f450abc8564a57c43d644077ab96f2934563e68b8a769d7"},
|
||||||
"credo_code_climate": {:hex, :credo_code_climate, "0.1.0", "1c4efbd11cb0244622ed5f09246b9afbbf796316ce03e78f67db6d81271d2978", [:mix], [{:credo, "~> 1.5", [hex: :credo, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "75529fe38056f4e229821d604758282838b8397c82e2c12e409fda16b16821ca"},
|
"credo_code_climate": {:hex, :credo_code_climate, "0.1.0", "1c4efbd11cb0244622ed5f09246b9afbbf796316ce03e78f67db6d81271d2978", [:mix], [{:credo, "~> 1.5", [hex: :credo, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "75529fe38056f4e229821d604758282838b8397c82e2c12e409fda16b16821ca"},
|
||||||
"dataloader": {:hex, :dataloader, "1.0.10", "a42f07641b1a0572e0b21a2a5ae1be11da486a6790f3d0d14512d96ff3e3bbe9", [:mix], [{:ecto, ">= 3.4.3 and < 4.0.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "54cd70cec09addf4b2ace14cc186a283a149fd4d3ec5475b155951bf33cd963f"},
|
"dataloader": {:hex, :dataloader, "2.0.0", "49b42d60b9bb06d761a71d7b034c4b34787957e713d4fae15387a25fcd639112", [:mix], [{:ecto, ">= 3.4.3 and < 4.0.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:opentelemetry_process_propagator, "~> 0.2.1", [hex: :opentelemetry_process_propagator, repo: "hexpm", optional: true]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "09d61781b76ce216e395cdbc883ff00d00f46a503e215c22722dba82507dfef0"},
|
||||||
"db_connection": {:hex, :db_connection, "2.5.0", "bb6d4f30d35ded97b29fe80d8bd6f928a1912ca1ff110831edcd238a1973652c", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c92d5ba26cd69ead1ff7582dbb860adeedfff39774105a4f1c92cbb654b55aa2"},
|
"db_connection": {:hex, :db_connection, "2.5.0", "bb6d4f30d35ded97b29fe80d8bd6f928a1912ca1ff110831edcd238a1973652c", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c92d5ba26cd69ead1ff7582dbb860adeedfff39774105a4f1c92cbb654b55aa2"},
|
||||||
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
|
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
|
||||||
"dialyxir": {:hex, :dialyxir, "1.3.0", "fd1672f0922b7648ff9ce7b1b26fcf0ef56dda964a459892ad15f6b4410b5284", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "00b2a4bcd6aa8db9dcb0b38c1225b7277dca9bc370b6438715667071a304696f"},
|
"dialyxir": {:hex, :dialyxir, "1.3.0", "fd1672f0922b7648ff9ce7b1b26fcf0ef56dda964a459892ad15f6b4410b5284", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "00b2a4bcd6aa8db9dcb0b38c1225b7277dca9bc370b6438715667071a304696f"},
|
||||||
"digital_token": {:hex, :digital_token, "0.4.0", "2ad6894d4a40be8b2890aad286ecd5745fa473fa5699d80361a8c94428edcd1f", [:mix], [{:cldr_utils, "~> 2.17", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "a178edf61d1fee5bb3c34e14b0f4ee21809ee87cade8738f87337e59e5e66e26"},
|
"digital_token": {:hex, :digital_token, "0.6.0", "13e6de581f0b1f6c686f7c7d12ab11a84a7b22fa79adeb4b50eec1a2d278d258", [:mix], [{:cldr_utils, "~> 2.17", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "2455d626e7c61a128b02a4a8caddb092548c3eb613ac6f6a85e4cbb6caddc4d1"},
|
||||||
"doctor": {:hex, :doctor, "0.21.0", "20ef89355c67778e206225fe74913e96141c4d001cb04efdeba1a2a9704f1ab5", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "a227831daa79784eb24cdeedfa403c46a4cb7d0eab0e31232ec654314447e4e0"},
|
"doctor": {:hex, :doctor, "0.21.0", "20ef89355c67778e206225fe74913e96141c4d001cb04efdeba1a2a9704f1ab5", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "a227831daa79784eb24cdeedfa403c46a4cb7d0eab0e31232ec654314447e4e0"},
|
||||||
"earmark_parser": {:hex, :earmark_parser, "1.4.32", "fa739a0ecfa34493de19426681b23f6814573faee95dfd4b4aafe15a7b5b32c6", [:mix], [], "hexpm", "b8b0dd77d60373e77a3d7e8afa598f325e49e8663a51bcc2b88ef41838cca755"},
|
"earmark_parser": {:hex, :earmark_parser, "1.4.33", "3c3fd9673bb5dcc9edc28dd90f50c87ce506d1f71b70e3de69aa8154bc695d44", [:mix], [], "hexpm", "2d526833729b59b9fdb85785078697c72ac5e5066350663e5be6a1182da61b8f"},
|
||||||
"eblurhash": {:hex, :eblurhash, "1.2.2", "7da4255aaea984b31bb71155f673257353b0e0554d0d30dcf859547e74602582", [:rebar3], [], "hexpm", "8c20ca00904de023a835a9dcb7b7762fed32264c85a80c3cafa85288e405044c"},
|
"eblurhash": {:hex, :eblurhash, "1.2.2", "7da4255aaea984b31bb71155f673257353b0e0554d0d30dcf859547e74602582", [:rebar3], [], "hexpm", "8c20ca00904de023a835a9dcb7b7762fed32264c85a80c3cafa85288e405044c"},
|
||||||
"ecto": {:hex, :ecto, "3.10.2", "6b887160281a61aa16843e47735b8a266caa437f80588c3ab80a8a960e6abe37", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "6a895778f0d7648a4b34b486af59a1c8009041fbdf2b17f1ac215eb829c60235"},
|
"ecto": {:hex, :ecto, "3.10.3", "eb2ae2eecd210b4eb8bece1217b297ad4ff824b4384c0e3fdd28aaf96edd6135", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "44bec74e2364d491d70f7e42cd0d690922659d329f6465e89feb8a34e8cd3433"},
|
||||||
"ecto_autoslug_field": {:hex, :ecto_autoslug_field, "3.0.0", "37fbc2f07e6691136afff246f2cf5b159ad395b665a55d06db918975fd2397db", [:mix], [{:ecto, ">= 3.7.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:slugger, ">= 0.3.0", [hex: :slugger, repo: "hexpm", optional: false]}], "hexpm", "8ec252c7cf85f13132062f56a484d6a0ef1f981f7be9ce4ad7e9546dd8c0cc0f"},
|
"ecto_autoslug_field": {:hex, :ecto_autoslug_field, "3.0.0", "37fbc2f07e6691136afff246f2cf5b159ad395b665a55d06db918975fd2397db", [:mix], [{:ecto, ">= 3.7.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:slugger, ">= 0.3.0", [hex: :slugger, repo: "hexpm", optional: false]}], "hexpm", "8ec252c7cf85f13132062f56a484d6a0ef1f981f7be9ce4ad7e9546dd8c0cc0f"},
|
||||||
"ecto_dev_logger": {:hex, :ecto_dev_logger, "0.9.0", "cb631469ac1940e97655d6fce85905b792ac9250ab18b19c664978b79f8dad59", [:mix], [{:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "2e8bc98b4ae4fcc7108896eef7da5a109afad829f4fb2eb46d677fdc9101c2d5"},
|
"ecto_dev_logger": {:hex, :ecto_dev_logger, "0.9.0", "cb631469ac1940e97655d6fce85905b792ac9250ab18b19c664978b79f8dad59", [:mix], [{:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "2e8bc98b4ae4fcc7108896eef7da5a109afad829f4fb2eb46d677fdc9101c2d5"},
|
||||||
"ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"},
|
"ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"},
|
||||||
"ecto_shortuuid": {:hex, :ecto_shortuuid, "0.1.3", "d36aede64edf256e4b769be2ad15a8ad5d9d1ff8ad46befe39e8cb4489abcd05", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:shortuuid, "~> 2.1.1", [hex: :shortuuid, repo: "hexpm", optional: false]}], "hexpm", "d215c8ced7125265de94d55abc696125942caef33439cf281fafded9744a4294"},
|
"ecto_shortuuid": {:hex, :ecto_shortuuid, "0.2.0", "57cae7b6016cc56a04457b4fc8f63957398dfd9023ff3e900eaf6805a40f8043", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:shortuuid, "~> 2.1 or ~> 3.0", [hex: :shortuuid, repo: "hexpm", optional: false]}], "hexpm", "b92e3b71e86be92f5a7ef6f3de170e7864454e630f7b01dd930414baf38efb65"},
|
||||||
"ecto_sql": {:hex, :ecto_sql, "3.10.1", "6ea6b3036a0b0ca94c2a02613fd9f742614b5cfe494c41af2e6571bb034dd94c", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.10.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f6a25bdbbd695f12c8171eaff0851fa4c8e72eec1e98c7364402dda9ce11c56b"},
|
"ecto_sql": {:hex, :ecto_sql, "3.10.1", "6ea6b3036a0b0ca94c2a02613fd9f742614b5cfe494c41af2e6571bb034dd94c", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.10.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f6a25bdbbd695f12c8171eaff0851fa4c8e72eec1e98c7364402dda9ce11c56b"},
|
||||||
"elixir_feed_parser": {:hex, :elixir_feed_parser, "2.1.0", "bb96fb6422158dc7ad59de62ef211cc69d264acbbe63941a64a5dce97bbbc2e6", [:mix], [{:timex, "~> 3.4", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm", "2d3c62fe7b396ee3b73d7160bc8fadbd78bfe9597c98c7d79b3f1038d9cba28f"},
|
"elixir_feed_parser": {:hex, :elixir_feed_parser, "2.1.0", "bb96fb6422158dc7ad59de62ef211cc69d264acbbe63941a64a5dce97bbbc2e6", [:mix], [{:timex, "~> 3.4", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm", "2d3c62fe7b396ee3b73d7160bc8fadbd78bfe9597c98c7d79b3f1038d9cba28f"},
|
||||||
"elixir_make": {:hex, :elixir_make, "0.7.7", "7128c60c2476019ed978210c245badf08b03dbec4f24d05790ef791da11aa17c", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "5bc19fff950fad52bbe5f211b12db9ec82c6b34a9647da0c2224b8b8464c7e6c"},
|
"elixir_make": {:hex, :elixir_make, "0.7.7", "7128c60c2476019ed978210c245badf08b03dbec4f24d05790ef791da11aa17c", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "5bc19fff950fad52bbe5f211b12db9ec82c6b34a9647da0c2224b8b8464c7e6c"},
|
||||||
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
|
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
|
||||||
"erlport": {:git, "https://github.com/tcitworld/erlport.git", "1f8f4b1a50ecdf7e959090fb566ac45c63c39b0b", [branch: "0.10.1-compat"]},
|
"erlport": {:hex, :erlport, "0.11.0", "8bb46a520e6eb9146e655fbf9b824433d9d532194667069d9aa45696aae9684b", [:rebar3], [], "hexpm", "8eb136ccaf3948d329b8d1c3278ad2e17e2a7319801bc4cc2da6db278204eee4"},
|
||||||
"eternal": {:hex, :eternal, "1.2.2", "d1641c86368de99375b98d183042dd6c2b234262b8d08dfd72b9eeaafc2a1abd", [:mix], [], "hexpm", "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782"},
|
"eternal": {:hex, :eternal, "1.2.2", "d1641c86368de99375b98d183042dd6c2b234262b8d08dfd72b9eeaafc2a1abd", [:mix], [], "hexpm", "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782"},
|
||||||
"ex_cldr": {:hex, :ex_cldr, "2.37.1", "6091fa719a7a96f9abee7aba186e63a906d504d08039cc8f0c683a0e71ee1bd7", [:mix], [{:cldr_utils, "~> 2.21", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.19", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: true]}], "hexpm", "5d60c3288454bc966e404ea4f59531f7dbb570d7e927dce62f0ab8466713bf78"},
|
"ex_cldr": {:hex, :ex_cldr, "2.37.2", "c45041534ec60af367c4c1af02a608576118044fe3c441c782fd424061d6b517", [:mix], [{:cldr_utils, "~> 2.21", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.19", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: true]}], "hexpm", "c8467b1d5080716ace6621703b6656cb2f9545572a54b341da900791a0cf92ba"},
|
||||||
"ex_cldr_calendars": {:hex, :ex_cldr_calendars, "1.22.0", "016373c6725682851d752b72585581154926b2c8a20ee43e418479911dae0ff9", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:ex_cldr_lists, "~> 2.10", [hex: :ex_cldr_lists, repo: "hexpm", optional: true]}, {:ex_cldr_numbers, "~> 2.31", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_cldr_units, "~> 3.16", [hex: :ex_cldr_units, repo: "hexpm", optional: true]}, {:ex_doc, "~> 0.21", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "c1c86de086009dce5786eb10fed0d351e52a844307c2ff0e83531f91d3268e8b"},
|
"ex_cldr_calendars": {:hex, :ex_cldr_calendars, "1.22.1", "3e5150f1fe7698e0fa118aeedcca1b5920d0a552bc40c81cf65ca9b0a4ea4cc3", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:ex_cldr_lists, "~> 2.10", [hex: :ex_cldr_lists, repo: "hexpm", optional: true]}, {:ex_cldr_numbers, "~> 2.31", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_cldr_units, "~> 3.16", [hex: :ex_cldr_units, repo: "hexpm", optional: true]}, {:ex_doc, "~> 0.21", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "e7408cd9e8318b2ef93b76728e84484ddc3ea6d7c894fbc811c54122a7140169"},
|
||||||
"ex_cldr_currencies": {:hex, :ex_cldr_currencies, "2.15.0", "aadd34e91cfac7ef6b03fe8f47f8c6fa8c5daf3f89b5d9fee64ec545ded839cf", [:mix], [{:ex_cldr, "~> 2.34", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "0521316396c66877a2d636219767560bb2397c583341fcb154ecf9f3000e6ff8"},
|
"ex_cldr_currencies": {:hex, :ex_cldr_currencies, "2.15.0", "aadd34e91cfac7ef6b03fe8f47f8c6fa8c5daf3f89b5d9fee64ec545ded839cf", [:mix], [{:ex_cldr, "~> 2.34", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "0521316396c66877a2d636219767560bb2397c583341fcb154ecf9f3000e6ff8"},
|
||||||
"ex_cldr_dates_times": {:hex, :ex_cldr_dates_times, "2.13.3", "bd01c75f017b3a024d0d4c189f2ee0573c15023e98ae16759228a7b57f9414bc", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:ex_cldr, "~> 2.36", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_calendars, "~> 1.18", [hex: :ex_cldr_calendars, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.28", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "f5b2216189bd9118bb2e5c1abd48f95f48b2eac954fe0e53370806d23b1641ac"},
|
"ex_cldr_dates_times": {:hex, :ex_cldr_dates_times, "2.13.3", "bd01c75f017b3a024d0d4c189f2ee0573c15023e98ae16759228a7b57f9414bc", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:ex_cldr, "~> 2.36", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_calendars, "~> 1.18", [hex: :ex_cldr_calendars, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.28", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "f5b2216189bd9118bb2e5c1abd48f95f48b2eac954fe0e53370806d23b1641ac"},
|
||||||
"ex_cldr_languages": {:hex, :ex_cldr_languages, "0.3.3", "9787002803552b15a7ade19496c9e46fc921baca992ea80d0394e11fe3acea45", [:mix], [{:ex_cldr, "~> 2.25", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "22fb1fef72b7b4b4872d243b34e7b83734247a78ad87377986bf719089cc447a"},
|
"ex_cldr_languages": {:hex, :ex_cldr_languages, "0.3.3", "9787002803552b15a7ade19496c9e46fc921baca992ea80d0394e11fe3acea45", [:mix], [{:ex_cldr, "~> 2.25", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "22fb1fef72b7b4b4872d243b34e7b83734247a78ad87377986bf719089cc447a"},
|
||||||
"ex_cldr_numbers": {:hex, :ex_cldr_numbers, "2.31.1", "ad3e8a33e8cb8d048173f2c89cf6fcec9f1694d99f890a75bc745894c3868d5b", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:digital_token, "~> 0.3 or ~> 1.0", [hex: :digital_token, repo: "hexpm", optional: false]}, {:ex_cldr, "~> 2.37", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_currencies, ">= 2.14.2", [hex: :ex_cldr_currencies, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "a94c40f4bf60f0e69c34977f33caeda483677232699ab0a6a98025ea011fabcf"},
|
"ex_cldr_numbers": {:hex, :ex_cldr_numbers, "2.31.3", "6ec8b18c395c0e8788d46da806f8f2abcbe4b0d809226d2a91363e9ccd85f2f5", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:digital_token, "~> 0.3 or ~> 1.0", [hex: :digital_token, repo: "hexpm", optional: false]}, {:ex_cldr, "~> 2.37", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_currencies, ">= 2.14.2", [hex: :ex_cldr_currencies, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "b519de08ecc4a6402038f3aa75e8654f78ebd6fa714b7e585531504e648588fd"},
|
||||||
"ex_cldr_plugs": {:hex, :ex_cldr_plugs, "1.3.0", "72a2064cb36c390dd0b212e8a172f643d455c8d362ee9c4bda29a96b42204df6", [:mix], [{:ex_cldr, "~> 2.37", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:gettext, "~> 0.19", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "699a98543ea14a7c849fae768041c40f49aa611aa55866025d227796e4858bff"},
|
"ex_cldr_plugs": {:hex, :ex_cldr_plugs, "1.3.0", "72a2064cb36c390dd0b212e8a172f643d455c8d362ee9c4bda29a96b42204df6", [:mix], [{:ex_cldr, "~> 2.37", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:gettext, "~> 0.19", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "699a98543ea14a7c849fae768041c40f49aa611aa55866025d227796e4858bff"},
|
||||||
"ex_doc": {:hex, :ex_doc, "0.29.4", "6257ecbb20c7396b1fe5accd55b7b0d23f44b6aa18017b415cb4c2b91d997729", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "2c6699a737ae46cb61e4ed012af931b57b699643b24dabe2400a8168414bc4f5"},
|
"ex_doc": {:hex, :ex_doc, "0.30.3", "bfca4d340e3b95f2eb26e72e4890da83e2b3a5c5b0e52607333bf5017284b063", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "fbc8702046c1d25edf79de376297e608ac78cdc3a29f075484773ad1718918b6"},
|
||||||
"ex_ical": {:hex, :ex_ical, "0.2.0", "4b928b554614704016cc0c9ee226eb854da9327a1cc460457621ceacb1ac29a6", [:mix], [{:timex, "~> 3.1", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm", "db76473b2ae0259e6633c6c479a5a4d8603f09497f55c88f9ef4d53d2b75befb"},
|
"ex_ical": {:hex, :ex_ical, "0.2.0", "4b928b554614704016cc0c9ee226eb854da9327a1cc460457621ceacb1ac29a6", [:mix], [{:timex, "~> 3.1", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm", "db76473b2ae0259e6633c6c479a5a4d8603f09497f55c88f9ef4d53d2b75befb"},
|
||||||
"ex_machina": {:hex, :ex_machina, "2.7.0", "b792cc3127fd0680fecdb6299235b4727a4944a09ff0fa904cc639272cd92dc7", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "419aa7a39bde11894c87a615c4ecaa52d8f107bbdd81d810465186f783245bf8"},
|
"ex_machina": {:hex, :ex_machina, "2.7.0", "b792cc3127fd0680fecdb6299235b4727a4944a09ff0fa904cc639272cd92dc7", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "419aa7a39bde11894c87a615c4ecaa52d8f107bbdd81d810465186f783245bf8"},
|
||||||
"ex_optimizer": {:hex, :ex_optimizer, "0.1.1", "62da37e206fc2233ff7a4e54e40eae365c40f96c81992fcd15b782eb25169b80", [:mix], [{:file_info, "~> 0.0.4", [hex: :file_info, repo: "hexpm", optional: false]}], "hexpm", "e6f5c059bcd58b66be2f6f257fdc4f69b74b0fa5c9ddd669486af012e4b52286"},
|
"ex_optimizer": {:hex, :ex_optimizer, "0.1.1", "62da37e206fc2233ff7a4e54e40eae365c40f96c81992fcd15b782eb25169b80", [:mix], [{:file_info, "~> 0.0.4", [hex: :file_info, repo: "hexpm", optional: false]}], "hexpm", "e6f5c059bcd58b66be2f6f257fdc4f69b74b0fa5c9ddd669486af012e4b52286"},
|
||||||
|
@ -55,14 +55,14 @@
|
||||||
"exkismet": {:git, "https://github.com/tcitworld/exkismet.git", "8b5485fde00fafbde20f315bec387a77f7358334", []},
|
"exkismet": {:git, "https://github.com/tcitworld/exkismet.git", "8b5485fde00fafbde20f315bec387a77f7358334", []},
|
||||||
"expo": {:hex, :expo, "0.1.0", "d4e932bdad052c374118e312e35280f1919ac13881cb3ac07a209a54d0c81dd8", [:mix], [], "hexpm", "c22c536021c56de058aaeedeabb4744eb5d48137bacf8c29f04d25b6c6bbbf45"},
|
"expo": {:hex, :expo, "0.1.0", "d4e932bdad052c374118e312e35280f1919ac13881cb3ac07a209a54d0c81dd8", [:mix], [], "hexpm", "c22c536021c56de058aaeedeabb4744eb5d48137bacf8c29f04d25b6c6bbbf45"},
|
||||||
"export": {:hex, :export, "0.1.1", "6dfd268b0692428f89b9285859a2dc02b6dcd2e8fdfbca34ac6e6a331351df91", [:mix], [{:erlport, "~> 0.9", [hex: :erlport, repo: "hexpm", optional: false]}], "hexpm", "3da7444ff4053f1824352f4bdb13fbd2c28c93c2011786fb686b649fdca1021f"},
|
"export": {:hex, :export, "0.1.1", "6dfd268b0692428f89b9285859a2dc02b6dcd2e8fdfbca34ac6e6a331351df91", [:mix], [{:erlport, "~> 0.9", [hex: :erlport, repo: "hexpm", optional: false]}], "hexpm", "3da7444ff4053f1824352f4bdb13fbd2c28c93c2011786fb686b649fdca1021f"},
|
||||||
"fast_html": {:hex, :fast_html, "2.0.5", "c61760340606c1077ff1f196f17834056cb1dd3d5cb92a9f2cabf28bc6221c3c", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "605f4f4829443c14127694ebabb681778712ceecb4470ec32aa31012330e6506"},
|
"fast_html": {:hex, :fast_html, "2.2.0", "6c5ef1be087a4ed613b0379c13f815c4d11742b36b67bb52cee7859847c84520", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "064c4f23b4a6168f9187dac8984b056f2c531bb0787f559fd6a8b34b38aefbae"},
|
||||||
"fast_sanitize": {:hex, :fast_sanitize, "0.2.3", "67b93dfb34e302bef49fec3aaab74951e0f0602fd9fa99085987af05bd91c7a5", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "e8ad286d10d0386e15d67d0ee125245ebcfbc7d7290b08712ba9013c8c5e56e2"},
|
"fast_sanitize": {:hex, :fast_sanitize, "0.2.3", "67b93dfb34e302bef49fec3aaab74951e0f0602fd9fa99085987af05bd91c7a5", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "e8ad286d10d0386e15d67d0ee125245ebcfbc7d7290b08712ba9013c8c5e56e2"},
|
||||||
"file_info": {:hex, :file_info, "0.0.4", "2e0e77f211e833f38ead22cb29ce53761d457d80b3ffe0ffe0eb93880b0963b2", [:mix], [{:mimetype_parser, "~> 0.1.2", [hex: :mimetype_parser, repo: "hexpm", optional: false]}], "hexpm", "50e7ad01c2c8b9339010675fe4dc4a113b8d6ca7eddce24d1d74fd0e762781a5"},
|
"file_info": {:hex, :file_info, "0.0.4", "2e0e77f211e833f38ead22cb29ce53761d457d80b3ffe0ffe0eb93880b0963b2", [:mix], [{:mimetype_parser, "~> 0.1.2", [hex: :mimetype_parser, repo: "hexpm", optional: false]}], "hexpm", "50e7ad01c2c8b9339010675fe4dc4a113b8d6ca7eddce24d1d74fd0e762781a5"},
|
||||||
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
|
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
|
||||||
"floki": {:hex, :floki, "0.34.3", "5e2dcaec5d7c228ce5b1d3501502e308b2d79eb655e4191751a1fe491c37feac", [:mix], [], "hexpm", "9577440eea5b97924b4bf3c7ea55f7b8b6dce589f9b28b096cc294a8dc342341"},
|
"floki": {:hex, :floki, "0.34.3", "5e2dcaec5d7c228ce5b1d3501502e308b2d79eb655e4191751a1fe491c37feac", [:mix], [], "hexpm", "9577440eea5b97924b4bf3c7ea55f7b8b6dce589f9b28b096cc294a8dc342341"},
|
||||||
"gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"},
|
"gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"},
|
||||||
"geo": {:hex, :geo, "3.5.1", "a7b1581770c5f0de3f19fe0977eb828b79af269669854ca944038f70188f47b5", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "c65cfdc5f214402b52a32c11ae9dec9530bbee4973303a67e75312db3ec7b59c"},
|
"geo": {:hex, :geo, "3.5.1", "a7b1581770c5f0de3f19fe0977eb828b79af269669854ca944038f70188f47b5", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "c65cfdc5f214402b52a32c11ae9dec9530bbee4973303a67e75312db3ec7b59c"},
|
||||||
"geo_postgis": {:hex, :geo_postgis, "3.4.2", "5a3462b2a2271d6949ba355ceed0212dc89ecfd6d0073ff1dd8fd53de78af867", [:mix], [{:geo, "~> 3.4", [hex: :geo, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: true]}, {:poison, "~> 2.2 or ~> 3.0 or ~> 4.0", [hex: :poison, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: false]}], "hexpm", "48d8c9f97f03805546db19217c42a57e972a3eb69fabaa3d11740285d25aaad4"},
|
"geo_postgis": {:hex, :geo_postgis, "3.4.3", "bd0a7ca7905ed8d73fa10aaa6a13daf68df2466a701c6f933226b9d2b11b8c44", [:mix], [{:geo, "~> 3.5", [hex: :geo, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: true]}, {:poison, "~> 2.2 or ~> 3.0 or ~> 4.0 or ~> 5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: false]}], "hexpm", "827d3364326417f9df5bdc86e30f89eeed3a573f62430a8a2544bce5326ff7dc"},
|
||||||
"geohax": {:hex, :geohax, "1.0.0", "89717442c5474a57d242b2361590bb33a7fbe6d8ec02a31d9865c3f33756d348", [:mix], [], "hexpm", "893ef2f905213acb67c615d2c955d926b1be3676bfc2bd5ed7271b641dfa2224"},
|
"geohax": {:hex, :geohax, "1.0.0", "89717442c5474a57d242b2361590bb33a7fbe6d8ec02a31d9865c3f33756d348", [:mix], [], "hexpm", "893ef2f905213acb67c615d2c955d926b1be3676bfc2bd5ed7271b641dfa2224"},
|
||||||
"geolix": {:hex, :geolix, "2.0.0", "7e65764bedfc98d08a3ddb24c417657c9d438eff163280b45fbb7de289626acd", [:mix], [], "hexpm", "8742bf588ed0bb7def2c443204d09d355990846c6efdff96ded66aac24c301df"},
|
"geolix": {:hex, :geolix, "2.0.0", "7e65764bedfc98d08a3ddb24c417657c9d438eff163280b45fbb7de289626acd", [:mix], [], "hexpm", "8742bf588ed0bb7def2c443204d09d355990846c6efdff96ded66aac24c301df"},
|
||||||
"geolix_adapter_mmdb2": {:hex, :geolix_adapter_mmdb2, "0.6.0", "6ab9dbf6ea395817aa1fd2597be25d0dda1853c7f664e62716e47728d18bc4f9", [:mix], [{:geolix, "~> 2.0", [hex: :geolix, repo: "hexpm", optional: false]}, {:mmdb2_decoder, "~> 3.0", [hex: :mmdb2_decoder, repo: "hexpm", optional: false]}], "hexpm", "06ff962feae8a310cffdf86b74bfcda6e2d0dccb439bb1f62df2b657b1c0269b"},
|
"geolix_adapter_mmdb2": {:hex, :geolix_adapter_mmdb2, "0.6.0", "6ab9dbf6ea395817aa1fd2597be25d0dda1853c7f664e62716e47728d18bc4f9", [:mix], [{:geolix, "~> 2.0", [hex: :geolix, repo: "hexpm", optional: false]}, {:mmdb2_decoder, "~> 3.0", [hex: :mmdb2_decoder, repo: "hexpm", optional: false]}], "hexpm", "06ff962feae8a310cffdf86b74bfcda6e2d0dccb439bb1f62df2b657b1c0269b"},
|
||||||
|
@ -80,8 +80,8 @@
|
||||||
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
|
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
|
||||||
"inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"},
|
"inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"},
|
||||||
"ip_reserved": {:hex, :ip_reserved, "0.1.1", "e5112d71f1abf05207f82fd9597d369a5fde1e0b6d1bbe77c02a99bb26ecdc33", [:mix], [{:inet_cidr, "~> 1.0.0", [hex: :inet_cidr, repo: "hexpm", optional: false]}], "hexpm", "55fcd2b6e211caef09ea3f54ef37d43030bec486325d12fe865ab5ed8140a4fe"},
|
"ip_reserved": {:hex, :ip_reserved, "0.1.1", "e5112d71f1abf05207f82fd9597d369a5fde1e0b6d1bbe77c02a99bb26ecdc33", [:mix], [{:inet_cidr, "~> 1.0.0", [hex: :inet_cidr, repo: "hexpm", optional: false]}], "hexpm", "55fcd2b6e211caef09ea3f54ef37d43030bec486325d12fe865ab5ed8140a4fe"},
|
||||||
"jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"},
|
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
|
||||||
"jose": {:hex, :jose, "1.11.5", "3bc2d75ffa5e2c941ca93e5696b54978323191988eb8d225c2e663ddfefd515e", [:mix, :rebar3], [], "hexpm", "dcd3b215bafe02ea7c5b23dafd3eb8062a5cd8f2d904fd9caa323d37034ab384"},
|
"jose": {:hex, :jose, "1.11.6", "613fda82552128aa6fb804682e3a616f4bc15565a048dabd05b1ebd5827ed965", [:mix, :rebar3], [], "hexpm", "6275cb75504f9c1e60eeacb771adfeee4905a9e182103aa59b53fed651ff9738"},
|
||||||
"jumper": {:hex, :jumper, "1.0.1", "3c00542ef1a83532b72269fab9f0f0c82bf23a35e27d278bfd9ed0865cecabff", [:mix], [], "hexpm", "318c59078ac220e966d27af3646026db9b5a5e6703cb2aa3e26bcfaba65b7433"},
|
"jumper": {:hex, :jumper, "1.0.1", "3c00542ef1a83532b72269fab9f0f0c82bf23a35e27d278bfd9ed0865cecabff", [:mix], [], "hexpm", "318c59078ac220e966d27af3646026db9b5a5e6703cb2aa3e26bcfaba65b7433"},
|
||||||
"junit_formatter": {:hex, :junit_formatter, "3.3.1", "c729befb848f1b9571f317d2fefa648e9d4869befc4b2980daca7c1edc468e40", [:mix], [], "hexpm", "761fc5be4b4c15d8ba91a6dafde0b2c2ae6db9da7b8832a55b5a1deb524da72b"},
|
"junit_formatter": {:hex, :junit_formatter, "3.3.1", "c729befb848f1b9571f317d2fefa648e9d4869befc4b2980daca7c1edc468e40", [:mix], [], "hexpm", "761fc5be4b4c15d8ba91a6dafde0b2c2ae6db9da7b8832a55b5a1deb524da72b"},
|
||||||
"linkify": {:hex, :linkify, "0.5.3", "5f8143d8f61f5ff08d3aeeff47ef6509492b4948d8f08007fbf66e4d2246a7f2", [:mix], [], "hexpm", "3ef35a1377d47c25506e07c1c005ea9d38d700699d92ee92825f024434258177"},
|
"linkify": {:hex, :linkify, "0.5.3", "5f8143d8f61f5ff08d3aeeff47ef6509492b4948d8f08007fbf66e4d2246a7f2", [:mix], [], "hexpm", "3ef35a1377d47c25506e07c1c005ea9d38d700699d92ee92825f024434258177"},
|
||||||
|
@ -103,38 +103,38 @@
|
||||||
"nimble_pool": {:hex, :nimble_pool, "0.2.6", "91f2f4c357da4c4a0a548286c84a3a28004f68f05609b4534526871a22053cde", [:mix], [], "hexpm", "1c715055095d3f2705c4e236c18b618420a35490da94149ff8b580a2144f653f"},
|
"nimble_pool": {:hex, :nimble_pool, "0.2.6", "91f2f4c357da4c4a0a548286c84a3a28004f68f05609b4534526871a22053cde", [:mix], [], "hexpm", "1c715055095d3f2705c4e236c18b618420a35490da94149ff8b580a2144f653f"},
|
||||||
"oauth2": {:hex, :oauth2, "2.1.0", "beb657f393814a3a7a8a15bd5e5776ecae341fd344df425342a3b6f1904c2989", [:mix], [{:tesla, "~> 1.5", [hex: :tesla, repo: "hexpm", optional: false]}], "hexpm", "8ac07f85b3307dd1acfeb0ec852f64161b22f57d0ce0c15e616a1dfc8ebe2b41"},
|
"oauth2": {:hex, :oauth2, "2.1.0", "beb657f393814a3a7a8a15bd5e5776ecae341fd344df425342a3b6f1904c2989", [:mix], [{:tesla, "~> 1.5", [hex: :tesla, repo: "hexpm", optional: false]}], "hexpm", "8ac07f85b3307dd1acfeb0ec852f64161b22f57d0ce0c15e616a1dfc8ebe2b41"},
|
||||||
"oauther": {:hex, :oauther, "1.3.0", "82b399607f0ca9d01c640438b34d74ebd9e4acd716508f868e864537ecdb1f76", [:mix], [], "hexpm", "78eb888ea875c72ca27b0864a6f550bc6ee84f2eeca37b093d3d833fbcaec04e"},
|
"oauther": {:hex, :oauther, "1.3.0", "82b399607f0ca9d01c640438b34d74ebd9e4acd716508f868e864537ecdb1f76", [:mix], [], "hexpm", "78eb888ea875c72ca27b0864a6f550bc6ee84f2eeca37b093d3d833fbcaec04e"},
|
||||||
"oban": {:hex, :oban, "2.15.1", "d49803174a4b564b1c90d107363d55a59e9e48aeb472ea364ea45d22a5c56997", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "60be616498db864a8fdd5e013b92f95d2a1d28a3f387c82bf05b35cdcb2af3e1"},
|
"oban": {:hex, :oban, "2.15.2", "8f934a49db39163633965139c8846d8e24c2beb4180f34a005c2c7c3f69a6aa2", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "0f4a579ea48fc7489e0d84facf8b01566e142bdc6542d7dabce32c10e664f1e9"},
|
||||||
"paasaa": {:hex, :paasaa, "0.6.0", "07c8ed81010caa25db351d474f0c053072c809821c60f9646f7b1547bec52f6d", [:mix], [], "hexpm", "732ddfc21bac0831edb26aec468af3ec2b8997d74f6209810b1cc53199c29f2e"},
|
"paasaa": {:hex, :paasaa, "0.6.0", "07c8ed81010caa25db351d474f0c053072c809821c60f9646f7b1547bec52f6d", [:mix], [], "hexpm", "732ddfc21bac0831edb26aec468af3ec2b8997d74f6209810b1cc53199c29f2e"},
|
||||||
"parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"},
|
"parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"},
|
||||||
"phoenix": {:hex, :phoenix, "1.7.6", "61f0625af7c1d1923d582470446de29b008c0e07ae33d7a3859ede247ddaf59a", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "f6b4be7780402bb060cbc6e83f1b6d3f5673b674ba73cc4a7dd47db0322dfb88"},
|
"phoenix": {:hex, :phoenix, "1.7.7", "4cc501d4d823015007ba3cdd9c41ecaaf2ffb619d6fb283199fa8ddba89191e0", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "8966e15c395e5e37591b6ed0bd2ae7f48e961f0f60ac4c733f9566b519453085"},
|
||||||
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.2", "b21bd01fdeffcfe2fab49e4942aa938b6d3e89e93a480d4aee58085560a0bc0d", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "70242edd4601d50b69273b057ecf7b684644c19ee750989fd555625ae4ce8f5d"},
|
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.2", "b21bd01fdeffcfe2fab49e4942aa938b6d3e89e93a480d4aee58085560a0bc0d", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "70242edd4601d50b69273b057ecf7b684644c19ee750989fd555625ae4ce8f5d"},
|
||||||
"phoenix_html": {:hex, :phoenix_html, "3.3.1", "4788757e804a30baac6b3fc9695bf5562465dd3f1da8eb8460ad5b404d9a2178", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "bed1906edd4906a15fd7b412b85b05e521e1f67c9a85418c55999277e553d0d3"},
|
"phoenix_html": {:hex, :phoenix_html, "3.3.1", "4788757e804a30baac6b3fc9695bf5562465dd3f1da8eb8460ad5b404d9a2178", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "bed1906edd4906a15fd7b412b85b05e521e1f67c9a85418c55999277e553d0d3"},
|
||||||
"phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"},
|
"phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"},
|
||||||
"phoenix_live_view": {:hex, :phoenix_live_view, "0.19.2", "23f88abd791869ff45ae78a66b3f5c9e2cef9f0318b07846ed7b9c3fdd817c21", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "91c57cb1f297f32e8b8f391e3f7ac6a696df1f10c126f9082bed391e8e3df594"},
|
"phoenix_live_view": {:hex, :phoenix_live_view, "0.19.5", "6e730595e8e9b8c5da230a814e557768828fd8dfeeb90377d2d8dbb52d4ec00a", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b2eaa0dd3cfb9bd7fb949b88217df9f25aed915e986a28ad5c8a0d054e7ca9d3"},
|
||||||
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
|
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
|
||||||
"phoenix_swoosh": {:hex, :phoenix_swoosh, "1.2.0", "a544d83fde4a767efb78f45404a74c9e37b2a9c5ea3339692e65a6966731f935", [:mix], [{:finch, "~> 0.8", [hex: :finch, repo: "hexpm", optional: true]}, {:hackney, "~> 1.10", [hex: :hackney, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6", [hex: :phoenix, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_view, "~> 1.0 or ~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:swoosh, "~> 1.5", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm", "e88d117251e89a16b92222415a6d87b99a96747ddf674fc5c7631de734811dba"},
|
"phoenix_swoosh": {:hex, :phoenix_swoosh, "1.2.0", "a544d83fde4a767efb78f45404a74c9e37b2a9c5ea3339692e65a6966731f935", [:mix], [{:finch, "~> 0.8", [hex: :finch, repo: "hexpm", optional: true]}, {:hackney, "~> 1.10", [hex: :hackney, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6", [hex: :phoenix, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_view, "~> 1.0 or ~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:swoosh, "~> 1.5", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm", "e88d117251e89a16b92222415a6d87b99a96747ddf674fc5c7631de734811dba"},
|
||||||
"phoenix_template": {:hex, :phoenix_template, "1.0.1", "85f79e3ad1b0180abb43f9725973e3b8c2c3354a87245f91431eec60553ed3ef", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "157dc078f6226334c91cb32c1865bf3911686f8bcd6bcff86736f6253e6993ee"},
|
"phoenix_template": {:hex, :phoenix_template, "1.0.3", "32de561eefcefa951aead30a1f94f1b5f0379bc9e340bb5c667f65f1edfa4326", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "16f4b6588a4152f3cc057b9d0c0ba7e82ee23afa65543da535313ad8d25d8e2c"},
|
||||||
"phoenix_view": {:hex, :phoenix_view, "2.0.2", "6bd4d2fd595ef80d33b439ede6a19326b78f0f1d8d62b9a318e3d9c1af351098", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}], "hexpm", "a929e7230ea5c7ee0e149ffcf44ce7cf7f4b6d2bfe1752dd7c084cdff152d36f"},
|
"phoenix_view": {:hex, :phoenix_view, "2.0.2", "6bd4d2fd595ef80d33b439ede6a19326b78f0f1d8d62b9a318e3d9c1af351098", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}], "hexpm", "a929e7230ea5c7ee0e149ffcf44ce7cf7f4b6d2bfe1752dd7c084cdff152d36f"},
|
||||||
"plug": {:hex, :plug, "1.14.2", "cff7d4ec45b4ae176a227acd94a7ab536d9b37b942c8e8fa6dfc0fff98ff4d80", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "842fc50187e13cf4ac3b253d47d9474ed6c296a8732752835ce4a86acdf68d13"},
|
"plug": {:hex, :plug, "1.14.2", "cff7d4ec45b4ae176a227acd94a7ab536d9b37b942c8e8fa6dfc0fff98ff4d80", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "842fc50187e13cf4ac3b253d47d9474ed6c296a8732752835ce4a86acdf68d13"},
|
||||||
"plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"},
|
"plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"},
|
||||||
"plug_crypto": {:hex, :plug_crypto, "1.2.5", "918772575e48e81e455818229bf719d4ab4181fcbf7f85b68a35620f78d89ced", [:mix], [], "hexpm", "26549a1d6345e2172eb1c233866756ae44a9609bd33ee6f99147ab3fd87fd842"},
|
"plug_crypto": {:hex, :plug_crypto, "1.2.5", "918772575e48e81e455818229bf719d4ab4181fcbf7f85b68a35620f78d89ced", [:mix], [], "hexpm", "26549a1d6345e2172eb1c233866756ae44a9609bd33ee6f99147ab3fd87fd842"},
|
||||||
"poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm", "dad79704ce5440f3d5a3681c8590b9dc25d1a561e8f5a9c995281012860901e3"},
|
"poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm", "dad79704ce5440f3d5a3681c8590b9dc25d1a561e8f5a9c995281012860901e3"},
|
||||||
"postgrex": {:hex, :postgrex, "0.17.1", "01c29fd1205940ee55f7addb8f1dc25618ca63a8817e56fac4f6846fc2cddcbe", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "14b057b488e73be2beee508fb1955d8db90d6485c6466428fe9ccf1d6692a555"},
|
"postgrex": {:hex, :postgrex, "0.17.2", "a3ec9e3239d9b33f1e5841565c4eb200055c52cc0757a22b63ca2d529bbe764c", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "80a918a9e9531d39f7bd70621422f3ebc93c01618c645f2d91306f50041ed90c"},
|
||||||
"progress_bar": {:hex, :progress_bar, "2.0.1", "7b40200112ae533d5adceb80ff75fbe66dc753bca5f6c55c073bfc122d71896d", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "2519eb58a2f149a3a094e729378256d8cb6d96a259ec94841bd69fdc71f18f87"},
|
"progress_bar": {:hex, :progress_bar, "3.0.0", "f54ff038c2ac540cfbb4c2bfe97c75e7116ead044f3c2b10c9f212452194b5cd", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "6981c2b25ab24aecc91a2dc46623658e1399c21a2ae24db986b90d678530f2b7"},
|
||||||
"rajska": {:git, "https://github.com/tcitworld/rajska.git", "0c036448e261e8be6a512581c592fadf48982d84", [branch: "mobilizon"]},
|
"rajska": {:git, "https://github.com/tcitworld/rajska.git", "0c036448e261e8be6a512581c592fadf48982d84", [branch: "mobilizon"]},
|
||||||
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
|
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
|
||||||
"remote_ip": {:hex, :remote_ip, "1.1.0", "cb308841595d15df3f9073b7c39243a1dd6ca56e5020295cb012c76fbec50f2d", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "616ffdf66aaad6a72fc546dabf42eed87e2a99e97b09cbd92b10cc180d02ed74"},
|
"remote_ip": {:hex, :remote_ip, "1.1.0", "cb308841595d15df3f9073b7c39243a1dd6ca56e5020295cb012c76fbec50f2d", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "616ffdf66aaad6a72fc546dabf42eed87e2a99e97b09cbd92b10cc180d02ed74"},
|
||||||
"replug": {:hex, :replug, "0.1.0", "61d35f8c873c0078a23c49579a48f36e45789414b1ec0daee3fd5f4e34221f23", [:mix], [{:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "f71f7a57e944e854fe4946060c6964098e53958074c69fb844b96e0bd58cfa60"},
|
"replug": {:hex, :replug, "0.1.0", "61d35f8c873c0078a23c49579a48f36e45789414b1ec0daee3fd5f4e34221f23", [:mix], [{:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "f71f7a57e944e854fe4946060c6964098e53958074c69fb844b96e0bd58cfa60"},
|
||||||
"sentry": {:hex, :sentry, "8.0.6", "c8de1bf0523bc120ec37d596c55260901029ecb0994e7075b0973328779ceef7", [:mix], [{:hackney, "~> 1.8", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.6", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, "~> 2.3", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm", "051a2d0472162f3137787c7c9d6e6e4ef239de9329c8c45b1f1bf1e9379e1883"},
|
"sentry": {:hex, :sentry, "8.1.0", "8d235b62fce5f8e067ea1644e30939405b71a5e1599d9529ff82899d11d03f2b", [:mix], [{:hackney, "~> 1.8", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.6", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, "~> 2.3", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm", "f9fc7641ef61e885510f5e5963c2948b9de1de597c63f781e9d3d6c9c8681ab4"},
|
||||||
"shortuuid": {:hex, :shortuuid, "2.1.2", "14dbafdb2f6c7213fdfcc05c7572384b5051a7b1621170018ad4c05504bd96c1", [:mix], [], "hexpm", "d9b0c4f37500ea5199b6275ece872e213e9f45a015caf4aa777cec84f63ad353"},
|
"shortuuid": {:hex, :shortuuid, "3.0.0", "028684d9eeed0ad4b800e8481afd854e1a61c526f35952455b2ee4248601e7b8", [:mix], [], "hexpm", "dfd8f80f514cbb91622cb83f4ac0d6e2f06d98cc6d4aeba94444a212289d0d39"},
|
||||||
"sitemapper": {:hex, :sitemapper, "0.7.0", "4aee7930327a9a01b1c9b81d1d42f60c1a295e9f420108eb2d130c317415abd7", [:mix], [{:ex_aws_s3, "~> 2.0", [hex: :ex_aws_s3, repo: "hexpm", optional: true]}, {:xml_builder, "~> 2.1", [hex: :xml_builder, repo: "hexpm", optional: false]}], "hexpm", "60f7a684e5e9fe7f10ac5b69f48b0be2bcbba995afafcb3c143fc0c8ef1f223f"},
|
"sitemapper": {:hex, :sitemapper, "0.7.0", "4aee7930327a9a01b1c9b81d1d42f60c1a295e9f420108eb2d130c317415abd7", [:mix], [{:ex_aws_s3, "~> 2.0", [hex: :ex_aws_s3, repo: "hexpm", optional: true]}, {:xml_builder, "~> 2.1", [hex: :xml_builder, repo: "hexpm", optional: false]}], "hexpm", "60f7a684e5e9fe7f10ac5b69f48b0be2bcbba995afafcb3c143fc0c8ef1f223f"},
|
||||||
"sleeplocks": {:hex, :sleeplocks, "1.1.2", "d45aa1c5513da48c888715e3381211c859af34bee9b8290490e10c90bb6ff0ca", [:rebar3], [], "hexpm", "9fe5d048c5b781d6305c1a3a0f40bb3dfc06f49bf40571f3d2d0c57eaa7f59a5"},
|
"sleeplocks": {:hex, :sleeplocks, "1.1.2", "d45aa1c5513da48c888715e3381211c859af34bee9b8290490e10c90bb6ff0ca", [:rebar3], [], "hexpm", "9fe5d048c5b781d6305c1a3a0f40bb3dfc06f49bf40571f3d2d0c57eaa7f59a5"},
|
||||||
"slugger": {:hex, :slugger, "0.3.0", "efc667ab99eee19a48913ccf3d038b1fb9f165fa4fbf093be898b8099e61b6ed", [:mix], [], "hexpm", "20d0ded0e712605d1eae6c5b4889581c3460d92623a930ddda91e0e609b5afba"},
|
"slugger": {:hex, :slugger, "0.3.0", "efc667ab99eee19a48913ccf3d038b1fb9f165fa4fbf093be898b8099e61b6ed", [:mix], [], "hexpm", "20d0ded0e712605d1eae6c5b4889581c3460d92623a930ddda91e0e609b5afba"},
|
||||||
"sobelow": {:hex, :sobelow, "0.12.2", "45f4d500e09f95fdb5a7b94c2838d6b26625828751d9f1127174055a78542cf5", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "2f0b617dce551db651145662b84c8da4f158e7abe049a76daaaae2282df01c5d"},
|
"sobelow": {:hex, :sobelow, "0.12.2", "45f4d500e09f95fdb5a7b94c2838d6b26625828751d9f1127174055a78542cf5", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "2f0b617dce551db651145662b84c8da4f158e7abe049a76daaaae2282df01c5d"},
|
||||||
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"},
|
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"},
|
||||||
"struct_access": {:hex, :struct_access, "1.1.2", "a42e6ceedd9b9ea090ee94a6da089d56e16f374dbbc010c3eebdf8be17df286f", [:mix], [], "hexpm", "e4c411dcc0226081b95709909551fc92b8feb1a3476108348ea7e3f6c12e586a"},
|
"struct_access": {:hex, :struct_access, "1.1.2", "a42e6ceedd9b9ea090ee94a6da089d56e16f374dbbc010c3eebdf8be17df286f", [:mix], [], "hexpm", "e4c411dcc0226081b95709909551fc92b8feb1a3476108348ea7e3f6c12e586a"},
|
||||||
"sweet_xml": {:hex, :sweet_xml, "0.7.3", "debb256781c75ff6a8c5cbf7981146312b66f044a2898f453709a53e5031b45b", [:mix], [], "hexpm", "e110c867a1b3fe74bfc7dd9893aa851f0eed5518d0d7cad76d7baafd30e4f5ba"},
|
"sweet_xml": {:hex, :sweet_xml, "0.7.3", "debb256781c75ff6a8c5cbf7981146312b66f044a2898f453709a53e5031b45b", [:mix], [], "hexpm", "e110c867a1b3fe74bfc7dd9893aa851f0eed5518d0d7cad76d7baafd30e4f5ba"},
|
||||||
"swoosh": {:hex, :swoosh, "1.11.1", "70be59dee05dd8ce8e1ed9cb15534779d72df9e1ef9c1c09aba0910485526eb2", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "173a5c0b5d42ead251ebdfad7601e57407639a25837f6b6ccf0ea5f36e4ad23f"},
|
"swoosh": {:hex, :swoosh, "1.11.4", "9b353f998cba3c5e101a0669559c2fb2757b5d9eb7db058bf08687d82e93e416", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d3390914022a456ae1604bfcb3431bd12509b2afe8c70296bae6c9dca4903d0f"},
|
||||||
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
|
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
|
||||||
"tesla": {:hex, :tesla, "1.7.0", "a62dda2f80d4f8a925eb7b8c5b78c461e0eb996672719fe1a63b26321a5f8b4e", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:finch, "~> 0.13", [hex: :finch, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, "~> 1.3", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:msgpax, "~> 2.3", [hex: :msgpax, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "2e64f01ebfdb026209b47bc651a0e65203fcff4ae79c11efb73c4852b00dc313"},
|
"tesla": {:hex, :tesla, "1.7.0", "a62dda2f80d4f8a925eb7b8c5b78c461e0eb996672719fe1a63b26321a5f8b4e", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:finch, "~> 0.13", [hex: :finch, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, "~> 1.3", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:msgpax, "~> 2.3", [hex: :msgpax, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "2e64f01ebfdb026209b47bc651a0e65203fcff4ae79c11efb73c4852b00dc313"},
|
||||||
"timex": {:hex, :timex, "3.7.11", "bb95cb4eb1d06e27346325de506bcc6c30f9c6dea40d1ebe390b262fad1862d1", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.20", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.1", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "8b9024f7efbabaf9bd7aa04f65cf8dcd7c9818ca5737677c7b76acbc6a94d1aa"},
|
"timex": {:hex, :timex, "3.7.11", "bb95cb4eb1d06e27346325de506bcc6c30f9c6dea40d1ebe390b262fad1862d1", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.20", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.1", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "8b9024f7efbabaf9bd7aa04f65cf8dcd7c9818ca5737677c7b76acbc6a94d1aa"},
|
||||||
|
|
109
mix.nix
109
mix.nix
|
@ -10,12 +10,12 @@ let
|
||||||
packages = with beamPackages; with self; {
|
packages = with beamPackages; with self; {
|
||||||
absinthe = buildMix rec {
|
absinthe = buildMix rec {
|
||||||
name = "absinthe";
|
name = "absinthe";
|
||||||
version = "1.7.1";
|
version = "1.7.5";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "0mralw4b8lwczv0m064h59y8fjqh9cihhmi5mpxkpyl173cxpi60";
|
sha256 = "05n33srckncg3f50nxzx3r05n8axiwb2c4p91snr8qm2vj5a7a92";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ dataloader decimal nimble_parsec telemetry ];
|
beamDeps = [ dataloader decimal nimble_parsec telemetry ];
|
||||||
|
@ -270,12 +270,12 @@ let
|
||||||
|
|
||||||
dataloader = buildMix rec {
|
dataloader = buildMix rec {
|
||||||
name = "dataloader";
|
name = "dataloader";
|
||||||
version = "1.0.10";
|
version = "2.0.0";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "0gwnrlrvylar2mdlgi9y9pylk8c3la3c2k71mjrg9pcsq3771kal";
|
sha256 = "1w7ygm885fidf8i5q89ya1mg800dy0zqig6djpiidqkcny0igmh9";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ ecto telemetry ];
|
beamDeps = [ ecto telemetry ];
|
||||||
|
@ -322,12 +322,12 @@ let
|
||||||
|
|
||||||
digital_token = buildMix rec {
|
digital_token = buildMix rec {
|
||||||
name = "digital_token";
|
name = "digital_token";
|
||||||
version = "0.4.0";
|
version = "0.6.0";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "09kfwvjmjzikhy7p7s5dgkl9x011xvsb052fqfrmpvhz3pvfsy51";
|
sha256 = "1lf4vp5bdjz4hmm6zb0knqz8qm4jn3fwma540a5i46n6wwkdcm94";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ cldr_utils jason ];
|
beamDeps = [ cldr_utils jason ];
|
||||||
|
@ -348,12 +348,12 @@ let
|
||||||
|
|
||||||
earmark_parser = buildMix rec {
|
earmark_parser = buildMix rec {
|
||||||
name = "earmark_parser";
|
name = "earmark_parser";
|
||||||
version = "1.4.32";
|
version = "1.4.33";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "0md7rhw1ix4fp31bql9scvl4jpijixczm2ky7mxffwq3srvxvc5q";
|
sha256 = "13qvlqnii8g6bcz6cl330vjwaan7jy30g1app3yvjncvf8rnhlid";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [];
|
beamDeps = [];
|
||||||
|
@ -374,12 +374,12 @@ let
|
||||||
|
|
||||||
ecto = buildMix rec {
|
ecto = buildMix rec {
|
||||||
name = "ecto";
|
name = "ecto";
|
||||||
version = "3.10.2";
|
version = "3.10.3";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "0d82qqlvhpi1mkqifayzzd0r0068l5csz1ml6i5qlr6py1w5g2ba";
|
sha256 = "0crlrpl392pbkzl6ar4z6afna8h9d46wshky1zbr3m344d7cggj4";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ decimal jason telemetry ];
|
beamDeps = [ decimal jason telemetry ];
|
||||||
|
@ -426,12 +426,12 @@ let
|
||||||
|
|
||||||
ecto_shortuuid = buildMix rec {
|
ecto_shortuuid = buildMix rec {
|
||||||
name = "ecto_shortuuid";
|
name = "ecto_shortuuid";
|
||||||
version = "0.1.3";
|
version = "0.2.0";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "152299sdkpmg3wlcyf9lyfp2r515c5lvqnnmjkg6alhjsz7ch5fj";
|
sha256 = "0rgvivrvl504jgfh2yqgcd74ar3q1qbxxwzngrd2zsbbx1qknbmr";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ ecto shortuuid ];
|
beamDeps = [ ecto shortuuid ];
|
||||||
|
@ -489,6 +489,19 @@ let
|
||||||
beamDeps = [];
|
beamDeps = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
erlport = buildRebar3 rec {
|
||||||
|
name = "erlport";
|
||||||
|
version = "0.11.0";
|
||||||
|
|
||||||
|
src = fetchHex {
|
||||||
|
pkg = "${name}";
|
||||||
|
version = "${version}";
|
||||||
|
sha256 = "1r7f0j12gnx65p6c86w035rjlzp1sa52ghyip0lx6j1rmz63dccf";
|
||||||
|
};
|
||||||
|
|
||||||
|
beamDeps = [];
|
||||||
|
};
|
||||||
|
|
||||||
eternal = buildMix rec {
|
eternal = buildMix rec {
|
||||||
name = "eternal";
|
name = "eternal";
|
||||||
version = "1.2.2";
|
version = "1.2.2";
|
||||||
|
@ -504,12 +517,12 @@ let
|
||||||
|
|
||||||
ex_cldr = buildMix rec {
|
ex_cldr = buildMix rec {
|
||||||
name = "ex_cldr";
|
name = "ex_cldr";
|
||||||
version = "2.37.1";
|
version = "2.37.2";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "0y5z2dkldf0a5zkdq9z9sxqbbnzp66azb92f81p9dg2lhhlc6q2x";
|
sha256 = "1fljryh921whv90v6m1aax2rabybark3nw11cv76lwc0a0fpnin8";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ cldr_utils decimal gettext jason nimble_parsec ];
|
beamDeps = [ cldr_utils decimal gettext jason nimble_parsec ];
|
||||||
|
@ -517,12 +530,12 @@ let
|
||||||
|
|
||||||
ex_cldr_calendars = buildMix rec {
|
ex_cldr_calendars = buildMix rec {
|
||||||
name = "ex_cldr_calendars";
|
name = "ex_cldr_calendars";
|
||||||
version = "1.22.0";
|
version = "1.22.1";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "12wf4v9r27skhc7gzhh78f22mraisg8gw47bhrbwx780hvh6vj61";
|
sha256 = "0s812jkj4hf5274gp568syk3xp2d9228wwkn7gwjx2rix3cqqh77";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ ex_cldr_numbers ex_doc jason ];
|
beamDeps = [ ex_cldr_numbers ex_doc jason ];
|
||||||
|
@ -569,12 +582,12 @@ let
|
||||||
|
|
||||||
ex_cldr_numbers = buildMix rec {
|
ex_cldr_numbers = buildMix rec {
|
||||||
name = "ex_cldr_numbers";
|
name = "ex_cldr_numbers";
|
||||||
version = "2.31.1";
|
version = "2.31.3";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "1kxb3w0yl9c0m6kb16k969r6g0x4xp536zwp6jffdw30pzs40k59";
|
sha256 = "1zc8hmj4wl1iamc7wjvizbbfny2gcpl7bapk70h419n4xh4dw6dm";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ decimal digital_token ex_cldr ex_cldr_currencies jason ];
|
beamDeps = [ decimal digital_token ex_cldr ex_cldr_currencies jason ];
|
||||||
|
@ -595,12 +608,12 @@ let
|
||||||
|
|
||||||
ex_doc = buildMix rec {
|
ex_doc = buildMix rec {
|
||||||
name = "ex_doc";
|
name = "ex_doc";
|
||||||
version = "0.29.4";
|
version = "0.30.3";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "1xf49d0ni08a83iankdj8fb6jyxm67wjl0gdwihwnimf6ykrjric";
|
sha256 = "1dhqi5qx2fkphia0g7x2qg6pib08wsbn4dyyg7gmxln18qh71j7v";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ earmark_parser makeup_elixir makeup_erlang ];
|
beamDeps = [ earmark_parser makeup_elixir makeup_erlang ];
|
||||||
|
@ -712,12 +725,12 @@ let
|
||||||
|
|
||||||
fast_html = buildMix rec {
|
fast_html = buildMix rec {
|
||||||
name = "fast_html";
|
name = "fast_html";
|
||||||
version = "2.0.5";
|
version = "2.2.0";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "01k51qri44535b1hwixlxk7151vph6vapswlfq918g245544ypv0";
|
sha256 = "1bpvmqw4pcx8ssgmazvqn0dm6b3g0m5rij6shy8qy5m6nhilyk06";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ elixir_make nimble_pool ];
|
beamDeps = [ elixir_make nimble_pool ];
|
||||||
|
@ -803,12 +816,12 @@ let
|
||||||
|
|
||||||
geo_postgis = buildMix rec {
|
geo_postgis = buildMix rec {
|
||||||
name = "geo_postgis";
|
name = "geo_postgis";
|
||||||
version = "3.4.2";
|
version = "3.4.3";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "1m5abb98a0kl24ysmawznqz2m5vylm17q88rvd35b003gzwwkn28";
|
sha256 = "1p7pdwrfbg244n50lhv27xbkmvgfi47y71nwbggzj5v469j36zc2";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ geo jason postgrex ];
|
beamDeps = [ geo jason postgrex ];
|
||||||
|
@ -1024,12 +1037,12 @@ let
|
||||||
|
|
||||||
jason = buildMix rec {
|
jason = buildMix rec {
|
||||||
name = "jason";
|
name = "jason";
|
||||||
version = "1.4.0";
|
version = "1.4.1";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "0891p2yrg3ri04p302cxfww3fi16pvvw1kh4r91zg85jhl87k8vr";
|
sha256 = "18d70i31bz11nr6vgsjn5prvhkvwqbyf3xq22ck5cnsnzp6ixc7v";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ decimal ];
|
beamDeps = [ decimal ];
|
||||||
|
@ -1037,12 +1050,12 @@ let
|
||||||
|
|
||||||
jose = buildMix rec {
|
jose = buildMix rec {
|
||||||
name = "jose";
|
name = "jose";
|
||||||
version = "1.11.5";
|
version = "1.11.6";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "115k981kfg9jmafgs16rybc5qah6p0zgvni3bdyfl0pyp8av5lyw";
|
sha256 = "0f4pzx8xdzjkkfjkl442w6lhajgfzsnp3dxcxrh1x72ga1swnxb2";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [];
|
beamDeps = [];
|
||||||
|
@ -1323,12 +1336,12 @@ let
|
||||||
|
|
||||||
oban = buildMix rec {
|
oban = buildMix rec {
|
||||||
name = "oban";
|
name = "oban";
|
||||||
version = "2.15.1";
|
version = "2.15.2";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "1qgk5b5wsdavy0mwi1zklcl1sajxz693n0ayvn7lm1nvk1j63gk0";
|
sha256 = "1sgickk10b73pkddfhk5vhmi8vjn065wzyl41ng4iiwgljg5fjhg";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ ecto_sql jason postgrex telemetry ];
|
beamDeps = [ ecto_sql jason postgrex telemetry ];
|
||||||
|
@ -1362,12 +1375,12 @@ let
|
||||||
|
|
||||||
phoenix = buildMix rec {
|
phoenix = buildMix rec {
|
||||||
name = "phoenix";
|
name = "phoenix";
|
||||||
version = "1.7.6";
|
version = "1.7.7";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "127v5lrb0zflgm5cqwxsfjv76mizdldkzs66rdhb0as0h1vvxd7n";
|
sha256 = "119h8lcvarlm7xrlrb301wgrd3plwwmbvl3f3dckfpjy75ff2rl9";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ castore jason phoenix_pubsub phoenix_template phoenix_view plug plug_cowboy plug_crypto telemetry websock_adapter ];
|
beamDeps = [ castore jason phoenix_pubsub phoenix_template phoenix_view plug plug_cowboy plug_crypto telemetry websock_adapter ];
|
||||||
|
@ -1414,12 +1427,12 @@ let
|
||||||
|
|
||||||
phoenix_live_view = buildMix rec {
|
phoenix_live_view = buildMix rec {
|
||||||
name = "phoenix_live_view";
|
name = "phoenix_live_view";
|
||||||
version = "0.19.2";
|
version = "0.19.5";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "157m7n71wfgd5c4gj9n120gxz5m6qrx3y7iriy5jxwwpyaqprici";
|
sha256 = "1lx9gi70a3cabjnjhslqbs8ysnpjz5yj324vjkxxg6zv7kfs1smj";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ jason phoenix phoenix_html phoenix_template phoenix_view telemetry ];
|
beamDeps = [ jason phoenix phoenix_html phoenix_template phoenix_view telemetry ];
|
||||||
|
@ -1453,12 +1466,12 @@ let
|
||||||
|
|
||||||
phoenix_template = buildMix rec {
|
phoenix_template = buildMix rec {
|
||||||
name = "phoenix_template";
|
name = "phoenix_template";
|
||||||
version = "1.0.1";
|
version = "1.0.3";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "1vlkd4z2bxinczwcysydidpnh49rpxjihb5k3k4k8qr2yrwc0z8m";
|
sha256 = "0b4fbp9dhfii6njksm35z8xf4bp8lw5hr7bv0p6g6lj1i9cbdx0n";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ phoenix_html ];
|
beamDeps = [ phoenix_html ];
|
||||||
|
@ -1531,12 +1544,12 @@ let
|
||||||
|
|
||||||
postgrex = buildMix rec {
|
postgrex = buildMix rec {
|
||||||
name = "postgrex";
|
name = "postgrex";
|
||||||
version = "0.17.1";
|
version = "0.17.2";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "0md5j9k1vkwwzql68in6hmj0vfcdbnav33shxszf4fz7i2s5gc0l";
|
sha256 = "036r3q250vrhj4nmyr4cc40krjgbyci18qkhppvkj7akx6liiac0";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ db_connection decimal jason ];
|
beamDeps = [ db_connection decimal jason ];
|
||||||
|
@ -1544,12 +1557,12 @@ let
|
||||||
|
|
||||||
progress_bar = buildMix rec {
|
progress_bar = buildMix rec {
|
||||||
name = "progress_bar";
|
name = "progress_bar";
|
||||||
version = "2.0.1";
|
version = "3.0.0";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "11wgy5qxr7yn3f299v2rlab6vjyqas13fag7jjha6jgil9cfn695";
|
sha256 = "1dzj622nf3drhswlvqia3b19j4wfclindi1d3b4yqjmjbarc50b9";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ decimal ];
|
beamDeps = [ decimal ];
|
||||||
|
@ -1596,12 +1609,12 @@ let
|
||||||
|
|
||||||
sentry = buildMix rec {
|
sentry = buildMix rec {
|
||||||
name = "sentry";
|
name = "sentry";
|
||||||
version = "8.0.6";
|
version = "8.1.0";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "10qqkqvykw8v3xdw9j19jgg3kwjfdrp9sz3wg0vk2bqnf822s6h5";
|
sha256 = "1d0sd34ckmnkx60zfqvwb7gf37cbjk166nay1x8qbs31xx0pdz7r";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ hackney jason plug plug_cowboy ];
|
beamDeps = [ hackney jason plug plug_cowboy ];
|
||||||
|
@ -1609,12 +1622,12 @@ let
|
||||||
|
|
||||||
shortuuid = buildMix rec {
|
shortuuid = buildMix rec {
|
||||||
name = "shortuuid";
|
name = "shortuuid";
|
||||||
version = "2.1.2";
|
version = "3.0.0";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "0lyk7bv89v3wfymg9jhml12rygi15s3wwpi7nscm3sh0fprw9c6r";
|
sha256 = "0f8dkll158j48jlynjkdrjc6vw72sv04lgxq5ii93fsca47zin6z";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [];
|
beamDeps = [];
|
||||||
|
@ -1674,12 +1687,12 @@ let
|
||||||
|
|
||||||
ssl_verify_fun = buildRebar3 rec {
|
ssl_verify_fun = buildRebar3 rec {
|
||||||
name = "ssl_verify_fun";
|
name = "ssl_verify_fun";
|
||||||
version = "1.1.6";
|
version = "1.1.7";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "1026l1z1jh25z8bfrhaw0ryk5gprhrpnirq877zqhg253x3x5c5x";
|
sha256 = "1y37pj5q6gk1vrnwg1vraws9yihrv9g4133w2qq1sh1piw71jk7y";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [];
|
beamDeps = [];
|
||||||
|
@ -1713,12 +1726,12 @@ let
|
||||||
|
|
||||||
swoosh = buildMix rec {
|
swoosh = buildMix rec {
|
||||||
name = "swoosh";
|
name = "swoosh";
|
||||||
version = "1.11.1";
|
version = "1.11.4";
|
||||||
|
|
||||||
src = fetchHex {
|
src = fetchHex {
|
||||||
pkg = "${name}";
|
pkg = "${name}";
|
||||||
version = "${version}";
|
version = "${version}";
|
||||||
sha256 = "0gyj99pg798frxn6nzw34nd661vlwl0pdbfzxd8x5sj2bl5mqfhp";
|
sha256 = "03rxj2jdrjg6pab05iz8myr0j9fi3d1v7z2bc3hnli9a08a0jffk";
|
||||||
};
|
};
|
||||||
|
|
||||||
beamDeps = [ cowboy gen_smtp hackney jason mime plug_cowboy telemetry ];
|
beamDeps = [ cowboy gen_smtp hackney jason mime plug_cowboy telemetry ];
|
||||||
|
|
Loading…
Reference in a new issue